JButton Image Ignoring GridBagConstraints

Posted by daemor on Stack Overflow See other posts from Stack Overflow or by daemor
Published on 2014-05-31T13:07:46Z Indexed on 2014/05/31 15:27 UTC
Read the original article Hit count: 217

Filed under:
|
|
|

I am working on an application and have a screen that needs to have elements (namely some custom JButtons) appear and disappear based on a user selection. However for some reason, when I add these buttons to their pane, the buttton image goes to the top corner, and leaves the text in the center, completely ignoring GridBagConstraints. I am completely stumped on this one as I have done this same exact thing dozens of times earlier in the program without any issues. Here is an image of the problem:

enter image description here

The problem is in this method here, and occurs down towards the bottom.

public void init(){
    contentPane.removeAll();

    // Setup jlabels
    JLabel countyLabel = new JLabel("County");
    countyLabel.setFont(new Font("Times New Roman", Font.PLAIN, 18));
    JLabel measureByLabel = new JLabel("Measure By: ");
    measureByLabel.setFont(new Font("Times New Roman", Font.PLAIN, 18));

    String[] countyChoices = {"Washtenaw", "Oakland", "Livingston"};

    // setup components
    JComboBox<String> countyCombo = new JComboBox<String>(countyChoices);


    // place baseComponents
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.gridx = 0;
    c.gridy = 0;
    c.anchor = GridBagConstraints.NORTH;
    contentPane.add(countyLabel, c);
    c.gridx = 2;
    contentPane.add(countyCombo, c);
    c.gridy = 1;
    c.gridx = 0;
    contentPane.add(trenchButton, c);
    c.gridx = 2;
    contentPane.add(bedButton, c);
    c.gridy = 2;
    c.gridx = 1;
    contentPane.add(systemSelection, c);
    c.gridy = 3;
    c.gridx = 0;
    contentPane.add(lengthButton, c);
    c.fill = GridBagConstraints.BOTH;
    c.gridwidth = 4;
    c.gridy = 4;
    c.gridx = 0;
    contentPane.add(choicePane, c);

    GridBagConstraints con = new GridBagConstraints();
    con.weightx = 0.5;
    con.weighty = 0.5;
    con.gridx = 0;
    con.gridy = 0;
    choicePane.add(lengthButton, c);

    // revalidate and repaint
    choicePane.revalidate();
    choicePane.repaint();
    contentPane.revalidate();
    contentPane.repaint();

}

I have tried doing this in separate methods, the button looks fine when added to the contentPane, the pane is for sure set to gridbagconstraints as I used the expression

JPanel choicePane = new JPanel(new GridBagLayout())

to initialize it.

© Stack Overflow or respective owner

Related posts about java

Related posts about swing