【问题标题】:Swing java JComboBox disappears whenever I write in JTextField每当我在 JTextField 中写入时,Swing java JComboBox 就会消失
【发布时间】:2020-03-23 11:05:04
【问题描述】:

我有一个使用 Java 中的 Swing 的主 JFrame 窗格,其中嵌入了一个 JComboBox 并带有许多选择。

一切都在打开时启动良好,但是当我在 JTextField 中写入时,JComboBox 中的文字消失了。

我正在通过以下方式启动我的JComboBox

private static String[] options = new String[] {"Search your own pasted text" ,  "Search your own file", 
        "Search website", "Search Lyric Database", "Search Books Database"};
private static JComboBox<String> bookList = new JComboBox<>(options);

那我就这样启动JTextField

private static JTextField textFieldTheme = new JTextField(50); 
private static String theme = textFieldTheme.getText();

不知道他们为什么会互相干扰....一切正常。事实上,我可以坚持点击JComboBox 菜单,只是它调整了大小,然后文字就消失了

【问题讨论】:

  • 为了获得更好的帮助,请尽快发布正确的minimal reproducible example 来证明您的问题。
  • 所有静态变量都表明类设计不佳。我建议您阅读 How to Use Text Fields 上的 Swing 教程中的部分以获得更好的设计。下载工作示例并将文本区域替换为您的组合框。那是从一个工作示例开始,蚂蚁做一个简单的改变。然后,如果它停止工作,您就会知道您所做的更改,您可以提出具体问题。
  • 您似乎没有接受任何答案。这样做对所有人都有帮助(包括你,因为它鼓励人们不要开始忽视你)。
  • @AndrewThompson 嗨,安德鲁感谢您的反馈...由于某种原因,答案仅显示为 cmets。你能建议如何接受它们作为答案
  • 在此处发表评论之前,请查看我在this answer 上发表的评论。

标签: java swing jtextfield jcombobox


【解决方案1】:

根据您编写的上述代码,一切看起来都很好。 最好也添加您的主框架代码以查看您如何添加组件。

无论如何你可以按照指示How to Use Text Fields

【讨论】:

    【解决方案2】:

    我发现 JTextField 干扰了 JTextArea 并且不知何故造成了干扰,因此如果我在 JTextField 中写入内容,JComboBox 菜单文本就会消失。

    我最终将 JTextField 变成了一个自定义的 JTextArea —— 虽然它并不理想,但它确实让 JComboBox 能够在文本不消失的情况下工作。

    我使用这段代码将 JTextArea 变成了 JTextField:

    JTextArea textFieldTheme = new JTextArea(textAreaText, 1, 50);
            DefaultCaret caret = (DefaultCaret)textFieldTheme.getCaret();
            caret.setUpdatePolicy(DefaultCaret.OUT_BOTTOM);
    

    改编自这篇有用的帖子: Java / Swing : JTextArea in a JScrollPane, how to prevent auto-scroll?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2011-03-09
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多