4

我正在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();

我究竟做错了什么?

4

2 回答 2

3

不要为JFrame( myFrame.repaint();) 重新绘制,您必须按照您的情况(re)validaterepaint最近的容器JPanel

JButton secondButton = new JButton();
myPanel.remove(firstButton);
myPanel.add(secondButton);
myPanel.revalidate();
myPanel.repaint();
于 2012-06-19T08:25:54.017 回答
2

您可以使用getComponents()来查找JButton索引,并将addComponent(Component component, int index)旧索引添加到位,然后您可以删除要替换的索引。

于 2012-06-19T08:26:07.573 回答