[英]Components are invisible in JFrame
您能否告诉我,为什么将JPanel等组件添加到JFrame时不可见? 这是我的代码:
public class GUI{
static JPanel panel = new JPanel();
private void createAndShowGUI() {
final ImageIcon zielonaikona = new ImageIcon("kulazielona.png");
JFrame frame1 = new JFrame("MasterMind");
JRadioButton zielony = new JRadioButton(zielonaikona);
zielony.setSelected(true);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton akceptuj = new JButton("Akceptuj");
akceptuj.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JLabel label2 = new JLabel(zielonaikona);
panel.add(label2);
}
});
BoxLayout layout = new BoxLayout(panel, BoxLayout.Y_AXIS);
panel.add(akceptuj);
panel.setLayout(layout);
panel.add(zielony);
JLabel label = new JLabel (zielonaikona);
panel.add(label);
frame1.getContentPane().add(panel);
frame1.getContentPane().add(akceptuj);
frame1.getContentPane().add(zielony);
frame1.setSize(200, 300);
frame1.setVisible(true);
}
public static void main(String[] args) {
GUI kk = new GUI();
kk.createAndShowGUI();
}
}
您将控件添加到JFrame
以及JPanel
panel
,因此它们将仅出现在添加了它们的最后一个容器中,即框架。 另外,由于将它们添加到默认的BorderLayout.CENTER
位置,每个位置都会移动最后一个位置,因此只剩下一个显示的组件( JRadioButton
zielony
)
要修复,请删除以下行:
frame1.getContentPane().add(akceptuj);
frame1.getContentPane().add(zielony);
旁白:当上飞 (即添加新组件JLabel
中添加ActionListener
),别忘了拨打:
panel.revalidate();
panel.repaint();
按钮和单选按钮两次添加到面板和框架。 您没有在框架上设置布局,但我认为它具有默认布局。 我只是不记得是哪种。
这是您的代码有误。
panel.add(akceptuj);
panel.add(zielony);
和
frame1.getContentPane().add(akceptuj);
frame1.getContentPane().add(zielony);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.