Java - setVisible只在点击屏幕后起作用



我有一个jframe与jcheckbox和jtextfield(它有更多的组件)。

我将标签设置为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多行。如果你需要看到更多,问我你需要哪一部分,我会在这里编辑。感谢您的阅读,更感谢您的帮助。

尝试使用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);
    }
}          

你需要重新绘制它,否则它会等待,直到重新绘制。

private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    if (jCheckBox1.isSelected()){
        jTextField17.setVisible(true);
        jTextField17.repaint();
    }else{
        jTextField17.setVisible(false);
    }
}    

如果你一开始不把textfield的setVisible方法设置为false,你就可以解决这个问题。

相关内容

  • 没有找到相关文章

最新更新