gpt4 book ai didi

java - JCombobox 无法将多个选项重命名为相同的值

转载 作者:行者123 更新时间:2023-12-02 09:35:39 27 4
gpt4 key购买 nike

我正在尝试将多个选项重命名为相同的值。如果已经有一个选项的值是我尝试将另一个选项重命名为的值,则不会发生任何情况。

这是我当前的代码:

package main.cache;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;

public class ComboBox {

private JFrame frame;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ComboBox window = new ComboBox();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the application.
*/
public ComboBox() {
initialize();
}

/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

String[] values = new String[] { "null", "null", "parameter3" };

final DefaultComboBoxModel<Object> models = new DefaultComboBoxModel<Object>(values);
JComboBox<Object> comboBox = new JComboBox<Object>(models);
comboBox.setBounds(130, 82, 168, 40);
frame.getContentPane().add(comboBox);

comboBox.setEditable(true);
comboBox.addActionListener(new ActionListener() {
private int localSelectedIndex = -1;

@Override
public void actionPerformed(ActionEvent e) {
int index = comboBox.getSelectedIndex();
if (index >= 0) {
localSelectedIndex = index;
} else if ("comboBoxEdited".equals(e.getActionCommand())) {
String newValue = (String) models.getSelectedItem();

// Change the value of the selected option
Object[] objects = new String[models.getSize()];
for (int i = 0; i < objects.length; i++) {
if (localSelectedIndex == i) {
objects[i] = newValue;
} else {
objects[i] = models.getElementAt(i);
}
}

// remove the elements and re add them
models.removeAllElements();
for (int i = 0; i < objects.length; i++) {
models.addElement(objects[i]);
}

// re-select the edited item
comboBox.setSelectedItem(newValue);
}
}
});

}
}

例如在这里,我有 3 个选项“null”、“null”、“parameter3”。假设我也想编辑parameter3 的第二个选项。目前,没有任何反应。

最佳答案

出现此问题的原因是 JComboBox 选择了第一次出现的字符串。因此,唯一的解决方案是使用一个名为 Element 的自定义类并重写 toString,然后添加元素,而不是将原始字符串添加到 JComboBox。

关于java - JCombobox 无法将多个选项重命名为相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57544234/

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