是否有清除Swing组件值的方法。例如,如果我们每次都要清除JTextField,我就必须调用-txtField.setText("")
。我曾经为这类案件制作了一种实用的方法——
public static void clearFields(JComponent[] components) {
for (int i = 0; i < components.length; i++) {
JTextComponent jComponent = (JTextComponent) components[i];
jComponent.setText("");
}
}
我想知道Swing API本身是否有更好的方法。或者是否有刷新JPanel中所有值的方法。
有两种方式
-
你的方法没有错,但我建议测试
if (c instanceof JTextField) {
,然后你可以在一个循环中为不同的JComponents
(或它们的组)重新设置(different too)值 -
将所需的
JComponents
放入某种类型的array
或map
, -
注意从之前的所有
JTextComponent
中删除(如果有)Document
或DocumentListener
,之后的值被重新设置,循环结束,然后将所需的侦听器添加回JTextComponent
,以避免引发重复事件。。。
不,这是正确的方法,我看不出以这种方式清除它们有什么不利之处。
我想的唯一替代方法就是通过实例化新的UI组件并重新发布它们来重新创建GUI,但这似乎有些过头了,还会让你失去对旧组件的所有引用。