【问题标题】:input jTextFields dissapear after showing a Jlabel over it.输入 jTextField 在其上显示 Jlabel 后消失。
【发布时间】:2013-10-20 03:30:34
【问题描述】:

我使用 Netbeans 的家伙 swing builder 创建了一个应用程序并制作了一个简单的 gui。 我创建了一个 jtextfield 和一个 jlabel。 jlabel 放置在 jtextfield 上,但在开始时不可见。

这是我的问题。当我运行我的应用程序时,我可以在 jtextfield 中输入文本。这没有问题。之后,我用一个按钮激活我的 jlabel。 jlabel 出现(在我想要的 jtextfield 顶部)。当我停用 jlabel 时,它会消失,但我的输入文本也消失了。实际上它是隐藏的,因为当我再次选择 jtextfield 时,部分文本开始再次出现。此外,当我再次开始在 jtextfield 中编写文本时,我之前的所有文本都会再次出现。

当我在我的 jtextfields 上显示/消失 jlabel 时,是否有某种方法可以再次更新字段或显示它们?还是这是某种错误?

我没有为此提供代码,因为我创建的简单程序不涉及高级编程。

我希望有人可以为我解决这个问题。

【问题讨论】:

  • 您需要提供一个可运行的问题示例,我们才能正确诊断它
  • 为什么要用 jlabel 覆盖 jtextfield?你想达到什么目的?也许你可以通过使前景色和背景色相同来完成类似的事情(使文本不可见)......
  • 您可以考虑交换它们,或者使用CardLayout,而不是覆盖组件。我没有为此提供任何代码,因为该解决方案不涉及高级编程

标签: java swing jtextfield


【解决方案1】:

你可能会使用

JFrame.validate();

删除 JLabel 后刷新 UI,它应该正确显示 JTextField...

如果还是不行你也可以试试:

JPanel.setVisible(false);

JPanel.setVisible(true);

(假设您在程序中使用 JPanel) 这也会刷新你的 UI

但是,如果您添加代码会更简单,这样我们就可以看到您可能做错了什么

【讨论】:

    【解决方案2】:

    已经自己解决了这个问题。 似乎我的文本字段没有正确分层;)

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      相关资源
      最近更新 更多