取代的JPanel我想与另一位在一个JFrame 我已经搜索并尝试我的代码,但没有什么是发生 更换一个JPanel这是我的代码:如何与其他的JPanel
public class Frame extends JFrame {
private Container contain;
private JPanel reChange,reChange2;
private JButton reChangeButton;
public Frame() {
super("Change a panel");
setSize(350, 350);
setLayout(null);
setLocationRelativeTo(null);
setResizable(false);
reChange = new JPanel(null);
reChange.setBackground(Color.red);
reChange.setSize(240, 225);
reChange.setBounds(50, 50, 240, 225);
add(reChange);
reChangeButton = new JButton("Change It");
reChangeButton.setBounds(20, 20, 100, 20);
add(reChangeButton);
reChangeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//System.out.println("in");
contain = getContentPane();
contain.removeAll();
//System.out.println("in2");
reChange2 = new JPanel(null);
reChange2.setBackground(Color.white);
reChange2.setSize(240, 225);
reChange2.setBounds(50, 50, 240, 225);
//System.out.println("in3");
contain.add(reChange2);
validate();
//System.out.println("in4");
setVisible(true);
//System.out.println("in5");
}
});
}
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
有人可以帮助我?非常感谢
+1对于cardlayout和advices,虽然我会推荐'revalidate()'over validate()'。 @ArdyYonathan请参阅[这里](http://stackoverflow.com/questions/14011397/how-to-add-jpanel-by-clicking-jbutton/14012757#14012757)CardLayout的示例 – 2013-02-14 13:22:40
@David Kroukamp不适用于所有人Java用户,他们中的大多数仍然使用Java6和次要版本(错过了Windows操作系统的大部分限制) – mKorbel 2013-02-14 13:31:33
+1 true ..大声笑,但也许我们的代码将迫使他们得到Java 7(或最新版本):) – 2013-02-14 13:32:31