【发布时间】:2010-08-14 13:39:08
【问题描述】:
我正在尝试对一些不支持 swing 的旧 Java 代码做一些小的补充。我需要添加一个小对话框,其中包含一个面板,该面板有一个复选框和几个文本字段。当用户单击复选框时,我想禁用或启用复选框。这部分似乎运行良好,但文本字段未正确重绘。当我单击复选框时,字段似乎没有启用,但是如果我然后单击面板或文本字段,您会看到它们已启用(反之亦然,当我取消选中复选框时,字段看起来仍然已启用直到您尝试单击它们并且它们变成幻影并且不会被选中)。我使用 setEnabled(boolean) 来设置字段的状态。更改状态后,我尝试在字段和面板上调用重绘和验证,但这似乎不起作用。我也试图让字段请求焦点,但这没有用。有人有其他想法吗?
//The class that contains all of this is of type Window
//Declaration of the components
private Panel _inputPanel;
private TextField min , max;
//This method adds to two text fields
public void addMinMaxtextFields(String min, String max) {
TextField minField = new TextField(min);
TextField maxField = new TextField(max);
this.min = minField;
this.max = maxField;
this.min.setEnabled(false);
this.max.setEnabled(false);
_inputPanel.add(minField);
_inputPanel.add(maxField);
}
//listener for the checkbox
public void itemStateChanged(ItemEvent e) {
Component[] components = _inputPanel.getComponents();
min.setEnabled(!min.isEnabled());
min.setVisible(true);
min.validate();
min.repaint();
_inputPanel.validate();
_inputPanel.repaint();
this.pack();
this.setSize(this.getWidth(), this.getHeight());
this.validate();
this.repaint();
/* do nothing */
}
【问题讨论】:
-
你能添加一些代码sn-ps吗?
-
对不起,我有紧急情况已经离开,我添加了代码sn-ps。
标签: checkbox panel awt textfield