我有一个屏幕,其中的一个组件根据布尔值而变得不可见。如果在创建屏幕后布尔值发生变化,如何刷新屏幕以考虑这一点?Java刷新屏幕
Q
Java刷新屏幕
2
A
回答
1
在需要布置的容器上调用validate()
方法 - 可能是窗口的内容窗格。
1
尝试拨打repaint()
,然后打电话给paintComponent()
。
3
我认为revalidate()更适合在这里,如果你正在处理JComponents。
根据JavaDoc:
支持延迟自动布局。
调用invalidate,然后将此组件的validateRoot添加到需要验证的组件列表。在所有当前未决事件分派后进行验证。换句话说,在调用此方法之后,将验证在向上移动此组件的包含层次结构时找到的第一个validateRoot(如果有)。默认情况下,JRootPane,JScrollPane和JTextField从isValidateRoot返回true。
当属性值发生变化时,此组件的大小,位置或内部布局受到影响时,将自动在此组件上调用此方法。这种自动更新不同于AWT,因为程序通常不再需要调用验证来更新GUI的内容。
1
我认为(用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
也将解决“重新铺设出”的页面的问题。
相关问题
- 1. Graphics.h刷新屏幕
- 2. 屏幕不刷新摆动java
- 3. UIApplicationExitsOnSuspend和屏幕刷新
- 4. 覆盖屏幕刷新率
- 5. GNU屏幕刷新问题
- 6. reloadData不刷新屏幕
- 7. 无效()不刷新屏幕
- 8. 刷新屏幕从BillingReceiver内
- 9. XNA更新和屏幕刷新
- 10. jquery返回到没有刷新屏幕的同一屏幕
- 11. 如何在屏幕分辨率更改后刷新屏幕?
- 12. Android刷新屏幕aftet按钮点击
- 13. 拉刷新:屏幕上消失
- 14. 刷新屏幕的Android麻烦Appcelerator的
- 15. 刷新屏幕亮度瞬间
- 16. 如何在BlackBerry中刷新屏幕?
- 17. Android设备的屏幕刷新时间
- 18. 单击屏幕时刷新iframe
- 19. jQuery切换随机刷新屏幕
- 20. iPhone/iOS popViewControllerAnimated不刷新屏幕
- 21. 调用屏幕上的功能刷新
- 22. 浏览器刷新屏幕尺寸
- 23. 刷新屏幕上的文本框
- 24. 如何刷新android主屏幕图标?
- 25. 用户交互后刷新屏幕
- 26. 刷新goBack上的前一个屏幕()
- 27. 如何从当前屏幕刷新UITableView
- 28. 如何刷新lightswitch中的父屏幕?
- 29. drawRect中没有刷新屏幕
- 30. UpdatePanel刷新和删除弹出屏幕