我有一个带有jcheckbox和jtextfield的jframe(它有更多的组件)。
我将标签设置为setVisible(false),当选中该复选框时,它应该使标签可见。实际上它确实如此,但是直到你点击框架上的任何其他地方你才能看到它。
以下是一些代码:
jTextField17 = new javax.swing.JTextField();
jTextField17.setText("Quantas?");
jTextField17.setVisible(false);
jTextField17.setMinimumSize(new java.awt.Dimension(52, 20));
jCheckBox1 = new javax.swing.JCheckBox();
jCheckBox1.setBackground(new java.awt.Color(153, 255, 153));
jCheckBox1.setText("Cabecinhas");
jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox1ActionPerformed(evt);
}
});
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()){
jTextField17.setVisible(true);
}else{
jTextField17.setVisible(false);
}
}
我认为代码没有任何问题。
总结一下:
用户点击复选框。复选框被标记,似乎没有其他事情发生。用户点击屏幕上的任意位置(选中复选框后)并显示文本字段。
我正在使用netbeans GUI编辑器。我想展示整个代码,但它是3000多行。如果你需要看到更多,请问我需要什么部分,我会在这里编辑。感谢您阅读本文,并感谢您提供更多帮助。
答案 0 :(得分:3)
尝试使用this.repaint();
和this.revalidate();
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()){
jTextField17.setVisible(true);
this.repaint();
this.revalidate();
}else{
jTextField17.setVisible(false);
}
}
答案 1 :(得分:0)
你需要重新制作它,否则它会等到它被重新绘制。
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()){
jTextField17.setVisible(true);
jTextField17.repaint();
}else{
jTextField17.setVisible(false);
}
}
答案 2 :(得分:0)
如果您最初不会将textfield的setVisible方法设置为false,则可以解决此问题。