Java 框架中面板中的文本字段最初设置为不可见;稍后程序将其设置为可见,但它不';不显示

Java 框架中面板中的文本字段最初设置为不可见;稍后程序将其设置为可见,但它不';不显示,java,swing,gui-builder,Java,Swing,Gui Builder,当尝试除以0时,txDiv0中的文本应该显示。初始设置为不可见。代码工作正常,但文本仅在单击框架边框时显示,好像要使其变大。将帧从字面上高出一个像素会使字段显示出来 GUIbuilder生成的代码: private javax.swing.JTextField txDiv0; ... txDiv0 = new javax.swing.JTextField(); ... txDiv0.setText("Division by 0 is undefined"); ...

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

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显示代码确实执行了。)


文本字段永远不会显示,除非我几乎不晃动框架的边缘。

您将需要调用
revalidate()
,然后在容器上调用
repaint()
,该容器在更改其可见性后保存txDiv0组件。原因是:

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

另外,我强烈建议您在学习GUI库时不要使用GUI生成器,而是尝试手动创建和修改GUI,因为这将使您更好地理解GUI库的基础,并迫使您阅读和学习更多教程。

--DUDE!今天早上,我在看一个老电视节目《巨蟒飞翔马戏团》,发现一个匈牙利人想从一个烟草商那里弄些火柴!所以不要介意“飞机上的蛇”!!天哪。。。太激动了,我忘了——再次感谢!!!你太棒了!!这当然奏效了。犯罪。。。我得等7分钟才能把你的投票选为“接受答案”。希望我记得@DSlomer64:很高兴它有帮助!两天前,我完全同意搁置GUIbuilder,但在GUIbuilder的帮助下,我在两天内创建了一个相当健壮的GUI,它是一个复数数学计算器——例如,它将找到(3+4i)的正弦,还将找到该数字的所有6个第6根。(我已经有了6月或7月的计算程序。)我学到了很多东西,现在我正赶上GUIbuilder的潮流!如果没有GUIbuilder,我不可能在两天内完成GUI。事实上,这段经历让我回到了一个旧项目,我放弃了这个项目,因为我不知道我在用swing做什么。