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在那里向我展示代码DID的执行。)
除非我几乎摆不到框架的边缘,否则文本区域不会显示。
答案 0 :(得分:3)
在更改其可见性后,您需要在包含txDiv0组件的容器上调用revalidate()
然后repaint()
。原因是:
revalidate()
告诉组件让布局管理器重新布局它包含的组件。此布局将级联当前容器所包含的组件的所有布局管理器。repaint()
向JVM建议容器可能有一些脏区域,需要在组件被移除,添加或移动后重新绘制。顺便说一句,我强烈建议您在学习GUI库时将GUI构建器放在一边,而是尝试手动创建和修改GUI,这样可以让您更好地理解GUI的基础知识。 GUI库,将迫使您更多地阅读和学习教程。