java - 框架面板中的文本字段最初设置为不可见;后来程序将其设置为可见但不显示

标签 java swing gui-builder

txDiv0 中的文本应该在尝试除以 0 时显示。它最初设置为不可见。该代码可以正常工作,但只有在我单击框架边框时才会显示文本,就好像要使其变大一样。使框架从字面上高一个像素可以使字段显示出来。

GUIbuilder 生成的代码:

    private javax.swing.JTextField txDiv0;
...
    txDiv0 = new javax.swing.JTextField();
...
    txDiv0.setText("Division by 0 is undefined");  
...
    javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
    jPanel6.setLayout(jPanel6Layout);
    jPanel6Layout.setHorizontalGroup(
      jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(txDiv0, javax.swing.GroupLayout.PREFERRED_SIZE, 300, javax.swing.GroupLayout.PREFERRED_SIZE)
        .addContainerGap())
    );
    jPanel6Layout.setVerticalGroup(
      jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
        .addGap(0, 11, Short.MAX_VALUE)
        .addComponent(txDiv0, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
    );
...    
    pack();

下面是我尝试让它显示的方法:

    txDiv0.setVisible(true);
    System.out.println();

(那里的 println 告诉我代码确实执行了。)

除非我勉强 Swing 框架的边缘,否则文本字段永远不会出现。

最佳答案

您需要调用 revalidate(),然后在包含您的 txDiv0 组件的容器 上调用 revalidate(),然后更改其可见性。这样做的原因是:

  • revalidate() 告诉组件让它的布局管理器重新布局它包含的组件。此布局将级联通过当前容器包含的组件的所有布局管理器。
  • repaint() 向 JVM 提示容器可能有一些脏区域需要在组件被移除、添加或移动后重新绘制。

顺便说一句,我强烈建议您在学习 GUI 库时将 GUI 构建器放在一边,而是尝试手动创建和修改 GUI,因为这将使您更好地理解 GUI 的基础GUI 库,将迫使您更多地阅读和学习教程。

关于java - 框架面板中的文本字段最初设置为不可见;后来程序将其设置为可见但不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556145/

相关文章:

java - 从 native API 检索来自加速度计的数据是否更准确?

java - Eclipse 使用 Java 9 显示空错误消息

java - jpanel 中图像的对齐

java - Java Swing 中的不对称布局

java - .NET ListBox 的 Swing 等价物

java - 如何在 NetBeans GUI Builder 中实现所见即所得?

java - 创建 JSpinner 错误的子类

java - 如何在旋转日志处理程序中保留初始日志文件

java - Swing 发电机