一旦可见,如何将组件添加到 JFrame 而无需调整它的大小?
我有一个程序,其中有一个 JFrame
和一个 JButton
.当用户点击JButton
时,JFrame
的所有Components
都被移除,红色背景的JPanel
添加到它.
I have a program where I have a JFrame
with a JButton
in it. When the user clicks the JButton
, all Components
of the JFrame
are removed, and a JPanel
with red background is added to it.
当我单击 JButton
时,红色的 JPanel
不会变得可见,除非我调整 JFrame
的大小(我使用的是 Windows 7).有没有办法实现我想要的,而无需手动调整 JFrame
的大小?
When I click the JButton
, that red JPanel
does not become visible unless I resize the JFrame
(I am using Windows 7). Is there a way to achieve what I want without having to manually resize the JFrame
?
这是我正在使用的代码的一部分:
Here is a part of the code I am using:
public class Demo implements ActionListener{
public static void main(String args[]){
...............
button.addActionListener(this); //'button' is an object of Jbutton class.
frame.setVisible(true); //'frame' is an object of JFrame class.
............
}
public void actionPerformed(ActionEvent ae){
frame.removeAllComponents();
frame.add(panel1); //panel1 is an object of Jpanel class with red background.
/* Here is where my problem lies.
panel1 is not visible to me unless I manually resize the JFrame. */
}
}
推荐答案
用于删除(然后,例如,添加新的 JComponents)JComponents 来自 JPanel 或来自 顶级容器您只需调用一次,并且在操作结束时调用:
For removing (and then, for example, add new JComponents) JComponents from JPanel or from top-level containers you have to call, only once and on the end of the action:
revalidate();
repaint();
如果您只调整或更改 JComponents:
And if you only resize or change JComponents:
validate();
repaint();
相关文章