英文:
GridBagLayout Stacking Buttons Horizontally rather than vertically, despite ascending gridy value
问题
I'm trying to get these three buttons to stack vertically, and I'm using gridy to ascend the value each time, however the buttons are appearing side by side, as shown below:
我尝试让这三个按钮垂直堆叠,并且我使用gridy来逐次增加值,但按钮却是并排显示的,如下所示:
Here is my StandardButton Class I'm using:
这是我使用的StandardButton类:
ActionListener listener;
public StandardButton(String text,Color backgroundColor, Color foregroundColor, Font font, LineBorder border, Integer width, Integer height, ActionListener listener) {
super(text);
this.actionListener = listener;
setBackground(backgroundColor);
setForeground(foregroundColor);
setFont(font);
setBorder(border);
setPreferredSize(new Dimension(width,height));
addActionListener(listener);
}
public StandardButton(String text,Color color, Integer height, ActionListener listener) {
super(text);
setBackground(MyLapsCompanionColorPreferences.retrieveMainForegroundColor());
setForeground(MyLapsCompanionColorPreferences.retrieveAccentForegroundColor());
setFont(MyLapsCompanionPreferences.retrieveMainFont());
setBorder(BorderFactory.createLineBorder(color,2));
Dimension dim = new Dimension();
dim.height = height;
setPreferredSize(dim);
addActionListener(listener);
}
}
I've tried just about every anchor setting, but this one seems to be working on my other classes in my program, so I'm not sure what the issue is here :(. Please could someone help
我尝试了几乎所有的锚定设置,但这个在我程序中的其他类上似乎有效,所以我不确定问题出在哪里 :(. 请问有人可以帮助吗?
英文:
I'm trying to get these three buttons to stack vertically, and I'm using gridy to ascend the value each time, however the buttons are appearing side by side, as shown below:
public class AdminAreaMainPanel extends JPanel {
StandardButton outputXMLButton, setUpRaceWeekendButton, editRaces;
public AdminAreaMainPanel(ActionListener parentListener) {
super(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.ipady = 5;
gc.ipadx = 5;
gc.anchor = GridBagConstraints.NORTH;
outputXMLButton = new StandardButton("Output XML File", Color.white, Color.green, MyLapsCompanionPreferences.retrieveMainFont(),
(LineBorder) BorderFactory.createLineBorder(MyLapsCompanionColorPreferences.retrieveAccentBackgroundColor(), 2), 200, 30, parentListener);
add(outputXMLButton);
// gc.anchor = GridBagConstraints.LAST_LINE_END;
gc.gridy = 1;
setUpRaceWeekendButton = new StandardButton("Set Up - Previous Timings", Color.white, Color.green, MyLapsCompanionPreferences.retrieveMainFont(),
(LineBorder) BorderFactory.createLineBorder(MyLapsCompanionColorPreferences.retrieveAccentBackgroundColor(), 2), 200, 30, parentListener);
setUpRaceWeekendButton.setToolTipText("Set up race weekend using the race timings and names from previously");
add(setUpRaceWeekendButton);
gc.gridy = 2;
editRaces = new StandardButton("Edit Races", Color.white, Color.green, MyLapsCompanionPreferences.retrieveMainFont(),
(LineBorder) BorderFactory.createLineBorder(MyLapsCompanionColorPreferences.retrieveAccentBackgroundColor(), 2), 200, 30, parentListener);
add(editRaces);
}
}
Here is my StandardButton Class I'm using:
ActionListener listener;
public StandardButton(String text,Color backgroundColor, Color foregroundColor, Font font, LineBorder border, Integer width, Integer height, ActionListener listener) {
super(text);
this.actionListener = listener;
setBackground(backgroundColor);
setForeground(foregroundColor);
setFont(font);
setBorder(border);
setPreferredSize(new Dimension(width,height));
addActionListener(listener);
}
public StandardButton(String text,Color color, Integer height, ActionListener listener) {
super(text);
setBackground(MyLapsCompanionColorPreferences.retrieveMainForegroundColor());
setForeground(MyLapsCompanionColorPreferences.retrieveAccentForegroundColor());
setFont(MyLapsCompanionPreferences.retrieveMainFont());
setBorder(BorderFactory.createLineBorder(color,2));
Dimension dim = new Dimension();
dim.height = height;
setPreferredSize(dim);
addActionListener(listener);
}
}
I've tried just about every anchor setting, but this one seems to be working on my other classes in my program, so I'm not sure what the issue is here :(. Please could someone help
答案1
得分: 0
你设置了属性 gc
,但实际上并没有在任何地方使用 gc
。
将这些代码更改为:
add(outputXMLButton, gc);
add(setUpRaceWeekendButton, gc);
add(editRaces, gc);
英文:
You’re setting the properties gc
but you’re not actually using gc
anywhere.
Change these:
add(outputXMLButton);
add(setUpRaceWeekendButton);
add(editRaces);
to this:
add(outputXMLButton, gc);
add(setUpRaceWeekendButton, gc);
add(editRaces, gc);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论