gpt4 book ai didi

java - 使用 SwingX AutoCompleteDecorator 刷新 JComboBox

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:22 26 4
gpt4 key购买 nike

我在 JComboBox 上使用 SwingX AutoCompleteDecorator。一切工作正常,除了我希望允许我的用户更改我的对象的名称,该名称也显示在组合框中。问题是我可以刷新组合框,但自动完成装饰器显示的字符串保持不变,如图所示: Problem

刷新组合框的代码如下所示:

try {
Aannemer a = getNewAannemer();
MainController.getInstance().updateAannemer(a);
aannemerBox.revalidate();
aannemerBox.repaint();
} catch (Exception ex) {
//...
}

当我从组合框中重新选择对象时,字符串会更新。我还尝试为组合框使用个性化渲染器和编辑器。

有什么想法可以刷新组合框中显示的字符串吗?

最佳答案

使用当前代码,很难判断出了什么问题。下面的代码对我来说效果很好

import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.BorderLayout;
import java.awt.EventQueue;

public class AutoCompleteCombobox {

public static void main( String[] args ) {
EventQueue.invokeLater( () -> {
JFrame frame = new JFrame( "TestFrame" );

JComboBox<String> comboBox = new JComboBox<>( );
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>( );
model.addElement( "First" );
model.addElement( "Second" );
comboBox.setModel( model );
comboBox.setEditable( true );

AutoCompleteDecorator.decorate( comboBox );

frame.getContentPane().add( comboBox );

JButton button = new JButton( "Add item" );
button.addActionListener( e -> {
String selectedItem = ( String ) comboBox.getSelectedItem();
if ( comboBox.getSelectedIndex() == -1 ){
model.addElement( selectedItem );
}
} );
frame.getContentPane().add( button, BorderLayout.SOUTH );

frame.pack();
frame.setVisible( true );
frame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
} );
}
}
  • 自动完成按预期工作
  • 我可以输入新项目
  • 使用添加按钮时,我可以添加新项目,并且自动完成功能表现良好

简而言之,我无法重现您的问题。请在您的问题中发布一段代码,以便我们重现该问题。

关于java - 使用 SwingX AutoCompleteDecorator 刷新 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26425992/

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