gpt4 book ai didi

Java Swing - 如何处理 ActionListener 中的泛型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:18 25 4
gpt4 key购买 nike

我有:

class CustomerActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
JComboBox cb = (JComboBox)event.getSource();
.. do something
}
}

这导致在 jdk7 中出现以下编译器警告:

JComboBox 是原始类型。对泛型 JComboBox 的引用应该被参数化

我试图将其参数化为:

JComboBox<String> cb = (JComboBox<String>)event.getSource();

但这仍然会留下以下编译器警告:

类型安全:未经检查的从 Object 到 JComboBox 的转换

因此我不确定如何消除编译器警告...

最佳答案

我很欣赏这种方法。它避免了任何类型转换并且易于阅读。

我改进了我的答案,现在它不会给你编译器警告。 JComboBox 的类型现在设置为字符串。要获得选定的项目,您必须通过 ComboBoxModel。

class CustomerActionListener implements ActionListener
{
private JComboBox<String> comboBox;
public CustomerActionListener(JComboBox<String> comboBox){
this.comboBox = comboBox;
}
@Override
public void actionPerformed(ActionEvent event)
{
// Just use the comboBox
ComboBoxModel<String> model = comboBox.getModel();
int index = comboBox.getSelectedIndex();
String choosen = model.getElementAt(index);
System.out.println("Hey you choose "+choosen);
}
}

关于Java Swing - 如何处理 ActionListener 中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738026/

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