Java - setVisible 仅在点击屏幕后有效
Java - setVisible only works after clicking on screen
我有一个带有 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 多行。如果你需要看更多,问我你需要什么部分,我会在这里编辑。感谢您阅读本文,更感谢您的帮助。
需要重绘才能成功,否则等到重绘完成
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()){
jTextField17.setVisible(true);
jTextField17.repaint();
}else{
jTextField17.setVisible(false);
}
}
如果您最初不将文本字段的 setVisible 方法设置为 false,则可以解决此问题。
尝试使用 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);
}
}
我有一个带有 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 多行。如果你需要看更多,问我你需要什么部分,我会在这里编辑。感谢您阅读本文,更感谢您的帮助。
需要重绘才能成功,否则等到重绘完成
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jCheckBox1.isSelected()){
jTextField17.setVisible(true);
jTextField17.repaint();
}else{
jTextField17.setVisible(false);
}
}
如果您最初不将文本字段的 setVisible 方法设置为 false,则可以解决此问题。
尝试使用 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);
}
}