如何用另一个JButton替换JPanel中的JButton

时间:2012-06-19 08:22:09

标签: java swing jpanel jbutton

我在java中尝试以下代码,但它似乎不适用于某种奇怪的时尚:

JFrame myFrame = new JFrame("Test Frame");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFrame.setLayout(new GridLayout());

JPanel myPanel = new JPanel();
myPanel.setLayout(new BorderLayout());
myFrame.add(myPanel);

JButton firstButton = new JButton();
myPanel.add(firstButton);

JButton secondButton = new JButton();
myPanel.remove(firstButton);
myPanel.add(secondButton);
myFrame.repaint();

我做错了什么?

2 个答案:

答案 0 :(得分:3)

不要为JFramemyFrame.repaint();)重新粉饰,您需要(re)validaterepaint最近的容器JPanel就在您的情况下

JButton secondButton = new JButton();
myPanel.remove(firstButton);
myPanel.add(secondButton);
myPanel.revalidate();
myPanel.repaint();

答案 1 :(得分:2)

您可以使用getComponents()来查找JButton索引,使用addComponent(Component component, int index)添加旧索引,之后您可以删除要替换的索引。< / p>