How to senter a JPanel on a parent container

Hi,
I have a fixed sized JPanel that I want to add to the center of a container. I would like my JPanel's center to be fixed to the center of the container.
I have tried to use GridBagLayout with a GridbagConstraint like follows:
GridBagLayout gridbag = new GridBagLayout();
getContentPane().setLayout(gridbag);
GridBagConstraints c = new GridBagConstraints();
c.fill = c.CENTER;
SubPanel subPanel = new SubPanel();
gridbag.setConstraints(subPanel, c);
getContentPane().add(subPanel);
setSize(400, 500);
setVisible(true);
But this results in the upper left corner of my JPanel being put in the center of the container. Does anyone know how to get the center of my JPanel being placed in the center?
Best regards
// Johan

how about flowlayout?
this.setLayout( new Flowlayout( Flowlayout.CENTER ) );
this.add( subPanel );
This might put it at the center at the top though.
Another way would be to use GridLayout and set the grids, when you add your panel it Should size the cells equal to your largest component which would be the JPanel, then just add blank JLabels to the other cells and add your subpanel to the center cell, that my work better.

Similar Messages

  • How to fire mouse wheel events to parent container?

    Hi,
    When I create a JPanel (let's say jParent) inside a JScrollPane and this JPanel is larger than the current viewport I can use my mouse wheel to scroll the JPanel's containt without coding anything about that.
    But if I add another JPanel-derived component (let's say jChild) to the first JPanel, mouse wheel events are not received by the first JPanel when the mouse is over the new added child JPanel.
    How can I forward child's mouse wheel events to the first JPanel?
    If I use:
    jChild.addMouseWheelListener(jParent)I must implement a mouseWheelMoved() method in jParent that requires some code to work while it was doing it byitself before...
    Thanks in advance for any help :-)
    Regards,
    Lara.

    you have a mouseWheelListener added to jChild?
    if so, in the mouseWheelMoved code include this line
    jParent.dispatchEvent(mouseWheelEvent);//or to the scrollpane

  • How to tint a JPanel that paints an Image

    Hello all,
    I have a basic understanding of Java Swing architecture and the Drawing capabilities of the Graphics and Graphics2D classes. However, i am utterly confused how to implement a basic tint over an image.
    Overview:
    I have a GCard (Graphical Card) class that extends JPanel. This class contains a BufferedImage so that when the GCard is added to a higher-level Container, it paints the BufferedImage. What I want to do is tint that card image to a user specified color (let's say RED) via the GCard.setTint(Color.RED) method and then allow them to control if the tint is on/off via the GCard.setTinted(true) method.
    What I have:
    Currently, I have the following in my GCard.paintComponent(Graphics g) method:
         @Override
         protected void paintComponent(Graphics g) {
              int xPosition = 0;
              int yPosition = 0;
              if(image != null) {
                   g.drawImage(image, xPosition, yPosition, null);
                   if(isTinted() && tint != null) {
                        g.setColor(tint);
                        for(int x = xPosition; x < (xPosition + image.getWidth()); x += 2)
                             for(int y = yPosition; y < (yPosition + image.getHeight()); y += 2)
                                  g.drawLine(x, y, x, y);
         }All this does is implement a rudimentary tinting scheme by setting every other pixel in the panel to the tint color.
    What I want:
    What I'd like to see instead is a red haze over the entirety of the image. Much like the multiple item selection process that occurs when you select multiple things in a modern-day OS.
    How can i do this?
    From what I've read/thought out, I can either edit the actual image data to increase the level of the appropriate tint color, but I would prefer to be non-destructive to the image I'm holding in memory. I would prefer to imitate the 'layer' functionality of Adobe Photoshop where my image is the 'background' and I have a transparent panel that is tinted which can be switched on and off. Can I accomplish all of this in the paintComponent() method or will i need to add a JPanel (let's call it a tintPanel)to the GCard object and then add/remove that component from the GCard as necessary?
    Thanks for the help!
    -Pheez

    Something likeprotected void paintComponent(Graphics g) {
       super.paintComponent(g);
       g.drawImage(....);
       g.setColor(new Color(r, g, b, a)); // where a <1.0
       g.fillRect(aRectThatOverlapsTheImage);
    }db

  • How to make a JPanel selectable

    When extending a JPanel and overriding the paintComponent() method the custom JPanel can not be selected so that it gets for example KeyEvents.
    But if I make the new Class extend a JButton it gets of course selected and able to receive for example KeyEvents.
    My question is therefore; what does the JButton implement that a JPanel doesn&#8217;t so that a JButton gets selectable? Or in other words; how to make a JPanel selectable?
    Aleksander.

    Try this extended code. Only the first panel added can get the Focus.
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class Test extends JFrame
      public Test()
        setLocation(400,300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel panel1 = new JPanel(new BorderLayout());
        JPanel panel2 = new JPanel(new BorderLayout());
        ImagePanel imgPanel = new ImagePanel();
        panel1.setFocusable(true);
        panel2.setFocusable(true);
        panel1.setPreferredSize(new Dimension(0, 50));
        panel2.setPreferredSize(new Dimension(0, 50));
        panel1.setBorder(BorderFactory.createLineBorder(Color.RED,     4));
        panel2.setBorder(BorderFactory.createLineBorder(Color.CYAN,    4));
        imgPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 4));
        panel1.add(new JLabel("Panel 1"), BorderLayout.CENTER);
        panel2.add(new JLabel("Panel 2"), BorderLayout.CENTER);
        getContentPane().add(panel1, BorderLayout.NORTH);
        getContentPane().add(panel2, BorderLayout.SOUTH);
        getContentPane().add(imgPanel, BorderLayout.CENTER);   
        pack();
        panel1.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent ke){
                System.out.println("Panel1");}});
        panel2.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent ke){
                System.out.println("Panel2");}});
      public static void main(String[] args){new Test().setVisible(true);}
    class ImagePanel extends JPanel
      Image img;
      public ImagePanel()
        setFocusable(true);
        setPreferredSize(new Dimension(400,300));
        try{img = javax.imageio.ImageIO.read(new java.net.URL(getClass().getResource("Test.gif"), "Test.gif"));}
        catch(Exception e){/*handled in paintComponent()*/}
        addKeyListener(new KeyAdapter(){
          public void keyPressed(KeyEvent ke){
            System.out.println("ImagePanel");}});
      public void paintComponent(Graphics g)
        if(img != null)
          g.drawImage(img, 0,0,this.getWidth(),this.getHeight(),this);
        else
          g.drawString("This space for rent",50,50);
    }

  • How to dynamically resize JPanel at runtime??

    Hello Sir:
    I met a problem, I need to resize a small JPanel called panel within a main Control JPanel (with null Layout) if I click the mouse then I can Drag and Resize this small JPanel Border to the size I need at runtime, I know I can use panel.setSize() or panel.setPreferredSize() methods at design time,
    But I have no idea how to do it even I search this famous fourm,
    How to dynamically resize JPanel at runtime??
    Can any guru throw some light or good example??
    Thanks

    Why are you using a null layout? Wouldn't having a layout manager help you in this situation?

  • How to place a JPanel at the center of another JPanel?

    Can anyone tell me how to place a JPanel inside another JPanel? The first JPanel consists of three JPanels each consisting of a label&textfield and are placed using BoxLayout. The second JPanel is a big blank screen. So, i would like to put the first JPanel at the center of second JPanel(horizontally & vertically). The problem is that i don't have any other component. So,if i try to use FlowLayout, i am able to put it at the center(horizontally, not vertically) only on the top edge. I tried to use BoxLayout. But, i couldn't(as i don't have any other elements). I tried to create some blank elements. But, they are messing up the elements of my JPanel. Any cluesssssssss??????????

    import java.awt.*;
    import javax.swing.*;
    public class CenteredLayout
        private JPanel getPanel()
            GridBagLayout gridbag = new GridBagLayout();
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(2,2,2,2);
            JPanel p = new JPanel(gridbag);
            addComponents(new JLabel("label 1"), new JTextField(8), p, gbc);
            addComponents(new JLabel("label 2"), new JTextField(8), p, gbc);
            addComponents(new JLabel("label 3"), new JTextField(8), p, gbc);
            JPanel panel = new JPanel(gridbag);
            panel.setBackground(Color.pink);
            gbc.anchor = GridBagConstraints.CENTER;
            gbc.insets = new Insets(0,0,0,0);
            panel.add(p, gbc);
            return panel;
        private void addComponents(Component c1, Component c2, Container c,
                                   GridBagConstraints gbc)
            gbc.anchor = GridBagConstraints.EAST;
            gbc.gridwidth = GridBagConstraints.RELATIVE;
            c.add(c1, gbc);
            gbc.anchor = GridBagConstraints.WEST;
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            c.add(c2, gbc);
        public static void main(String[] args)
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(new CenteredLayout().getPanel());
            f.setSize(400,400);
            f.setLocation(200,200);
            f.setVisible(true);
    }

  • How to add an Icon to a parent menu item in Command Center?

    Hi guys,
    does anybody know how to add an icon to a parent maenu item in Command Center? BTW, I'm using SBO 6.5
    Cheers,
    Oki

    The SDK doesn't provide any features for adding icons to the command center in SBO6.5.
    Version 2004 has a new image property for menu items that can be used.
    John.

  • How to sent the data reading in labview to excel datasheet

    Hi,
    I have aquire the current input from Cb68LP connector block to the labview.Thank a lot
    But I not sure how to sent the data to the excel datasheet(with row and column).
    thank

    Hi.
    You can save your data as "Spreadsheet-File". I my case I aquire digital data.
    the channels are the rows and the pattern are the columns.
    The Spreadsheet-File you can save as .txt then you can open it directly
    in Excel.
    Attachments:
    wf.JPG ‏194 KB

  • How do I put some kind of parental controls on my ipad 2? My 7 year old daughter just purchased, without my permission, $275 worth of in app purchases in Mall Stars game.  Any tips on how to reverse that purchase?

    How do I put some kind of parental controls on my ipad 2? My 7 year old daughter just purchased, without my permission, $275 worth of in app purchases in Mall Stars game.  Any tips on how to reverse that purchase?

    You can also contact itunes support and ask for a refund.
    expresslane.apple.com
    https://expresslane.apple.com/Issues.action

  • How can i centre two side by side divs vertically so they both are in the centre of there parent /containing div?

    How can i centre two side by side divs vertically so they both are in the centre of there parent /containing div? One of the divs is larger than the other so i would want the smaller one to centre inside a parent div like so:
    Grey= parent/container (Width of both orange and red div)
    Orange= Div 1
    Red= Smaller div- centralised (hopefully)

    If you wanted to go completely "Not for IE8 or lower" and use some of the often overlooked viewport units, it could be very responsive to browser resizing...
    <!doctype html>
    <html lang="en-us">
    <head>
    <meta charset="utf-8">
    <title> VW, it's not just a car for Mac users...</title>
    <style>
         -moz-box-sizing:border-box;
         -webkit-box-sizing:border-box;
         box-sizing:border-box;
    #gray {
        background-color:gray;
        width:80vw;
        margin:0 auto;
        height:40vw;
        font-size:2vw;
    #red {
        width:50%;
        height:50%;
        background-color:red;
        margin-top:12.5%;
        float:left;
    #orange {
        background-color:orange;
        width:50%;
        height:100%;
        float:left;
    </style>
    <!--[if lt IE 9]>
    <link href="IE-only.css" rel="stylesheet" type="text/css">
    <![endif]-->
    </head>
    <body>
    <div id="gray">
        <div id="orange"></div>
        <div id="red"></div>
    </div>
    </body>
    </html>

  • How to sent importet RAW files into the cloud? The files was importet from Canon EOS via camera adapter to the iPad. The Files was stored in the folder importet. But the files does not sync with photostream.

    How to sent importet RAW files into the cloud? The files was importet from Canon EOS via camera adapter to the iPad. The Files was stored in the folder importet. But the files does not sync with photostream.

    Welcome to the Apple community.
    Only photos taken on the iOS device and after photo stream was enabled will be added to photo stream.

  • How to sent/recie​ve simple USB commands?

    Hello,
    Before I start. I've been reading om the internet (USB tutorials, nuggets, etc.) for the last 2 days to get this,
    but it is really confusing and I still have no idea how to do this. So I'm asking for your help.
    I setup a custom USB device in MAX.
    I need to sent this command:    0x2 M 1 0x3
    Were 0x2 defines the start and 0x3 defines the end of the command.
    I think I have to use a control transfer, but I do not understand what to use at the Index, Value, Request Value,
    Request and Length inputs. I also do not understand how to sent Hex, Dec and ASCII at the same time.
    Do I need to convert these values?
    I would really appreciate some example code. Can I use the VISA commands?
    Kudos will be given, thank you in advance 
    The Enrichment Center is required to remind you that you will be baked, and then there will be cake.
    Solved!
    Go to Solution.

    Heinen wrote:
    I need to sent this command:    0x2 M 1 0x3
    I also do not understand how to sent Hex, Dec and ASCII at the same time.
    Do I need to convert these values?
    I am not sure about the Index, Value, Request Value,
    But about sending your comand....
    I assume the space before the "M" and the space after the "1" is not needed,
    but the space between the "M" and the "1" is needed
    Omar

  • How do i change birthday and get parent approval

    We created a account for our son but we used a different b-day. how do change is birthday and get parent approval. He is a minor.

    Hi mmitchell619,
    Welcome to the Apple Support Communities!
    I understand that you would like to edit the birth date for your son’s Apple ID. To change the birthday, please use the steps located in the following article. 
    Update the birth date associated with your Apple ID - Apple Support
    Best regards,
    Joe

  • How to create multiple BOM of same parent item?

    Hi All,
    Please guide me, How to create multiple BOM of same parent item? I tried but system throws a message as same Parent Item already exist in the table. I am afraid if system supports this functionality or not?

    Hi,
    You are welcome.......
    Well the exact process would be as I mentioned in my previous post.
    1. Create the BOM for an item
    2. Choose this item in the Production Order
    3. Then in this Production order you can change/ delete/ add whichever item you want .
    OR
    If all the child items are completely different from the original BOM then you can use the Special Type BOM in which you can always create the BOM while creating the Production Order itself. There is no standard BOM here.
    J Nagesh

  • How to sent text from my C# WinForm program to another program - where the cursore is

    hi
    how to sent text from my C# WinForm program to another program - where the cursore is
    for example: i have in my program label that contain "ABC" , when i press 'Z'
    the ABC will Appears where the cursore is standing.
    how to do it ?
    what to look for ?
    thanks

    Hi E_Gold,
    You'll need to:
    1) Bring the app to the front
    2) SendKeys to the app
    This code will send "ABC" to MS Word:
    using System.Runtime.InteropServices;
    private void Form1_Load(object sender, EventArgs e)
    // Send the keys 'ABC' to MS Word:
    SendKeysToApp("word", "ABC");
    private void SendKeysToApp(string appName, string keys)
    if (BringAppToFront(appName))
    SendKeys.Send(keys);
    [DllImport("User32.dll")]
    private static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);
    private bool BringAppToFront(string processName)
    IntPtr hWnd = HWnd(processName);
    if (hWnd != new IntPtr(0))
    SwitchToThisWindow(hWnd, true);
    return true;
    else
    return false;
    private IntPtr HWnd(string processName)
    IntPtr hwnd = new IntPtr(0);
    using (Process process = ProcessGet(processName))
    if (process != null)
    try
    IntPtr h = process.MainWindowHandle;
    hwnd = h;
    catch
    if (hwnd != new IntPtr(0))
    return hwnd;
    return hwnd;
    public Process ProcessGet(string processNameToGet)
    if (processNameToGet == "")
    return null;
    Process[] processes = Process.GetProcesses();
    foreach (Process process in processes)
    if (process.ProcessName.IndexOf(processNameToGet, StringComparison.CurrentCultureIgnoreCase) != -1)
    return process;
    return null;
    For info on sending special keys such as "Enter", so this page on MS website:
    SendKeys Class
    Hope this helps.
    Thanks, Andy

Maybe you are looking for