Java刷新屏幕
答
在需要布置的容器上调用validate()
方法 - 可能是窗口的内容窗格。
答
尝试拨打repaint()
,然后打电话给paintComponent()
。
答
我认为revalidate()更适合在这里,如果你正在处理JComponents。
根据JavaDoc:
支持延迟自动布局。
调用invalidate,然后将此组件的validateRoot添加到需要验证的组件列表。在所有当前未决事件分派后进行验证。换句话说,在调用此方法之后,将验证在向上移动此组件的包含层次结构时找到的第一个validateRoot(如果有)。默认情况下,JRootPane,JScrollPane和JTextField从isValidateRoot返回true。
当属性值发生变化时,此组件的大小,位置或内部布局受到影响时,将自动在此组件上调用此方法。这种自动更新不同于AWT,因为程序通常不再需要调用验证来更新GUI的内容。
答
我认为(用Java 6?)你不需要做任何事......这应该会自动发生 - 不是吗?
通过下面的例子,它会自动发生...
public class TT extends JFrame
{
public TT()
{
setLayout(new FlowLayout());
JLabel label = new JLabel();
label.setText("Label:");
add(label);
final JTextField textField = new JTextField();
add(textField);
JButton button = new JButton();
button.setText("Button");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if (textField.isVisible())
{
textField.setVisible(false);
}
else
{
textField.setVisible(true);
}
}
});
add(button);
setSize(100,100);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
TT frame = new TT();
frame.setDefaultCloseOperation(TT.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
[添加]并使用布局管理器一样GridBagLayout
也将解决“重新铺设出”的页面的问题。