Java - setVisible仅在点击屏幕

时间:2015-08-11 16:51:10

标签: java netbeans ide jframe jcheckbox

我有一个带有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多行。如果你需要看到更多,请问我需要什么部分,我会在这里编辑。感谢您阅读本文,并感谢您提供更多帮助。

3 个答案:

答案 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,则可以解决此问题。