我试图使像一个面板按钮和一个列表选择不同的选项。但是不管我做什么,我都不能做同样的尺寸。
从我的类“动画师”,我想添加一个按钮面板到东边的JFrame。而居中将是一个动画,移动一个盒子,但它还有待创建。我想我先做了按钮面板。
我尝试过setPreferedSize(new dimension(x,y))
,但是如果在button
上这样做,JComboBox
也会改变。而button
仍然保持不变。我很困惑。
另外,在选择另一个选项之后,Jcombobox
没有任何动作?不应该吗?
这是动画代码:
frame = new JFrame("Box Mover Calculator!");
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
buttonArea = new ButtonPanel(this);
boxArea = new JPanel(new GridLayout(1,1));
frame.add(boxArea, BorderLayout.CENTER);
frame.add(buttonArea, BorderLayout.EAST);
frame.setVisible(true);
这是按钮面板:
public ButtonPanel(Animator animator) {
super();
//this.animator = animator;
//setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
buttonRow = new JPanel();
buttonRow.setLayout(new BoxLayout(buttonRow, BoxLayout.PAGE_AXIS));
buttonRow.setBackground(Color.CYAN);
this.setBackground(Color.CYAN);
button1 = new JButton("Start Animation");
button1.addActionListener(new QuitHandler());
button1.setBackground(Color.CYAN);
button1.setForeground(Color.blue);
buttonRow.add(button1);
button2 = new JButton("Move Box");
button2.addActionListener(new QuitHandler());
button2.setBackground(Color.CYAN);
button2.setForeground(Color.blue);
button2.setOpaque(true);
buttonRow.add(button2);
String[] bookTitles = new String[] {"Effective Java", "Head First Java",
"Thinking in Java", "Java for Dummies"};
JComboBox<String> bookList = new JComboBox<>(bookTitles);
//add to the parent container (e.g. a JFrame):
buttonRow.add(bookList);
//get the selected item:
String selectedBook = (String) bookList.getSelectedItem();
System.out.println("You seleted the book: " + selectedBook);
//Adds all rows
add(buttonRow);
setVisible(true);
}
这是快照,
发布于 2016-03-07 02:42:41
也许试着使用GridBagLayout
,例如.
public class TestPane extends JPanel {
public TestPane() {
setLayout(new BorderLayout());
JPanel buttonRow = new JPanel(new GridBagLayout());
buttonRow.setBackground(Color.CYAN);
this.setBackground(Color.CYAN);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.fill = GridBagConstraints.HORIZONTAL;
JButton button1 = new JButton("Start Animation");
button1.setBackground(Color.CYAN);
button1.setForeground(Color.blue);
buttonRow.add(button1, gbc);
JButton button2 = new JButton("Move Box");
button2.setBackground(Color.CYAN);
button2.setForeground(Color.blue);
button2.setOpaque(true);
buttonRow.add(button2, gbc);
String[] bookTitles = new String[]{"Effective Java", "Head First Java",
"Thinking in Java", "Java for Dummies"};
JComboBox<String> bookList = new JComboBox<>(bookTitles);
gbc.weighty = 1;
gbc.anchor = GridBagConstraints.NORTH;
//add to the parent container (e.g. a JFrame):
buttonRow.add(bookList, gbc);
//Adds all rows
add(buttonRow);
}
}
有关更多细节,请参见如何使用GridBagLayout
https://stackoverflow.com/questions/35840826
复制相似问题