我在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();
我做错了什么?
答案 0 :(得分:3)
不要为JFrame
(myFrame.repaint();
)重新粉饰,您需要(re)validate
和repaint
最近的容器JPanel
就在您的情况下{ p>
JButton secondButton = new JButton();
myPanel.remove(firstButton);
myPanel.add(secondButton);
myPanel.revalidate();
myPanel.repaint();
答案 1 :(得分:2)
您可以使用getComponents()
来查找JButton
索引,使用addComponent(Component component, int index)
添加旧索引,之后您可以删除要替换的索引。< / p>