正如您在下面所看到的,我创建了一个JComboBox,其中的元素包含在'选项中。 array作为列表中的选项。
当选择列表中的特定项目时,我想显示JLabels' one'或者'两个'。 例如。选择选项一显示一个'并选择选项二显示'两个'并删除一个'从显示器,反之亦然。
我知道如何使用add()添加JLabel;但我不知道如何区分选择哪个项目。
我在线搜索并查看了java文档,但我找不到相关的解决方案。
由于
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.lang.*;
import java.util.*;
public class converterPage extends JFrame {
private JComboBox box;
private static String[] options = {"Option one", "Option two"};
private JLabel one, two;
public converterPage() {
super("Convert Units");
setLayout (null);
box = new JComboBox(options);
box.setBounds(10, 10, 150, 30);
add(box);
one = new JLabel("one");
two = new JLabel("two");
one.setBounds(170, 10, 150, 30);
two.setBounds(170, 10, 150, 30);
box.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
// depending on what is selected, i want to only display certain stuff
}
}
);
}
}
答案 0 :(得分:1)
一种方法是使用:JComboBox#getSelectedItem()
。
答案 1 :(得分:1)
您可以使用:
event.getItem()
获取表示当前所选项目的Object
。该对象实际上是String
,因为组合框是使用String
s的数组创建的。
答案 2 :(得分:0)
我相信这就是你所追求的:
import java.awt.event.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
public class ConverterPage extends JFrame
{
private JComboBox box;
private final Map<String, JLabel> map = new HashMap<>();
public ConverterPage()
{
super("Convert Units");
super.setLayout(null);
final JLabel one = new JLabel("one");
final JLabel two = new JLabel("two");
one.setBounds(170, 10, 150, 30);
two.setBounds(170, 10, 150, 30);
this.map.put("Option one", one);
this.map.put("Option two", two);
this.box = new JComboBox(this.map.keySet().toArray(new String[this.map.size()]));
this.box.setBounds(10, 10, 150, 30);
super.add(box);
this.box.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent event)
{
// depending on what is selected, i want to only display certain stuff
final JLabel label = map.get((String) event.getItemSelectable().getSelectedObjects()[0]);
System.out.println(label.getText());
}
});
}
public static void main(String[] args)
{
final ConverterPage c = new ConverterPage();
c.setSize(400, 400);
c.setVisible(true);
}
}
我冒昧地清理你的导入(你永远不需要从java.lang
导入它,因为它是自动导入的),类名应该在CapitalCase中。