gpt4 book ai didi

java - JComboBox 显示多行文本

转载 作者:行者123 更新时间:2023-11-29 04:32:30 25 4
gpt4 key购买 nike

我目前正在编写一个小工具,用于将 sql 查询发送到数据库并接收相应的数据。

现在解决我的问题:我想允许用户输入新的搜索查询或从保存最后几个查询的“最新”列表中进行选择。为此,我计划使用可编辑的 JComboBox,但我无法在框中显示多行文本。

我想这样做的原因是,sql 查询可能会变得很长,而且我想让框可编辑,同时保持框架干净。

我找到了在下拉菜单中显示多行的方法,但对于框本身却一无所获。

在此先感谢您,如果我忽略了一些简单的事情,请原谅我;)

问候语宙斯

最佳答案

扩展的编辑功能由 ComboBoxEditor 提供,这允许您定义用作组合框编辑器的实际组件

根据您的要求,您将(至少)需要一个 JTextArea,以提供(可选)自动换行和多行

一个粗略而现成的例子可能看起来像这样......

public class TextAreaComboBoxEditor implements ComboBoxEditor {

private JTextArea ta = new JTextArea(4, 20);
private JScrollPane sp = new JScrollPane(ta);

public TextAreaComboBoxEditor() {
ta.setWrapStyleWord(true);
ta.setLineWrap(true);
}

@Override
public Component getEditorComponent() {
return sp;
}

@Override
public void setItem(Object anObject) {
if (anObject instanceof String) {
ta.setText((String) anObject);
} else {
ta.setText(null);
}
}

@Override
public Object getItem() {
return ta.getText();
}

@Override
public void selectAll() {
ta.selectAll();
}

@Override
public void addActionListener(ActionListener l) {
}

@Override
public void removeActionListener(ActionListener l) {
}

}

这不支持 ActionListener,因为 JTextAreaEnter 键用于它自己的目的。如果你愿意,你可以使用 key bindings API添加您自己的可以触发 ActionListenerAction,为此,您需要提供 List 或其他管理它们的方法这样你就可以给他们回电话了

关于java - JComboBox 显示多行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com