嗨,有谁知道为什么我的“button1”没有显示?我执行程序时似乎无法弄清楚它是否正常运行并成功运行但它不显示此按钮。任何帮助将不胜感激。
private Container c;
private JPanel gridPanel;
private JComboBox combo;
final JLabel label = new JLabel();
private JButton button1 = new JButton("Clear");
private JButton button2 = new JButton("Exit");
/**
* Christopher Haddad - 559815X
*/
public Planets() {
c = getContentPane();
gridPanel = new JPanel();
gridPanel.setLayout(new GridLayout(5, 0, 0, 0));
label.setVisible(true);
combo = new JComboBox();
combo.setEditable(false);
combo.addItem("No Planet Selected");
combo.addItem("Mercury");
combo.addItem("Venus");
combo.addItem("Earth");
gridPanel.add(combo);
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
c.add(gridPanel, BorderLayout.NORTH);
setTitle("Planet Diameter");
setSize(700, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
combo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JComboBox comboBox = (JComboBox) event.getSource();
Object select = comboBox.getSelectedItem();
if(select.toString().equals("No Planet Selected"))
label.setText("");
else if(select.toString().equals("Mercury"))
label.setText("The planet Mercury is 3100kms in diameter");
else if(select.toString().equals("Venus"))
label.setText("The planet Venus is 7500kms in diameter");
else if (select.toString().equals("Earth"))
label.setText("The planet Earth is 8000kms in diameter");
}
});
getContentPane().add(combo);
getContentPane().add(label);
}
// event handling method, implementing the actionPerformed method of ActionListener
public void actionPerformed(ActionEvent e)
{
// set the button label to number of times it has been clicked
if(e.getSource() == button1) {
label.setText(" ");
}
else if(e.getSource() == button2) {
System.exit(0);
}
}
答案 0 :(得分:3)
很难确定,但我假设您正在将内容直接添加到顶级容器,例如JFrame
JFrame
使用BorderLayout
作为默认布局管理器,因此使用
add(button1);
add(button2);
基本上说,add
button1
到CENTER
位置然后add
button2
到CENTER
位置。 BorderLayout
只允许单个组件存在于特定位置。
首先尝试将按钮添加到另一个面板...