gpt4 book ai didi

java - JComboBox 返回值

转载 作者:搜寻专家 更新时间:2023-11-01 01:46:15 24 4
gpt4 key购买 nike

用什么方法返回用户选择的选项?

JPanel ageSelection = new JPanel();
JLabel age = new JLabel("Age:");

ArrayList<Integer> ageList = new ArrayList<Integer>();

for (int i = 1; i <= 100; ++i) {
ageList.add(i);
}

DefaultComboBoxModel<Integer> modelAge = new DefaultComboBoxModel<Integer>();
for (Integer i : ageList) {
modelAge.addElement(i);
}

JComboBox<Integer> ageEntries = new JComboBox<Integer>();
ageEntries.setModel(modelAge);

ageEntries.addActionListener(new putInTextListener());

ageSelection.add(age);
ageSelection.add(ageEntries);


class putInTextListener implements ActionListener {
public void actionPerformed (ActionEvent event) {
ageEntries.getSelectedItem();
}
}

添加最后一行时 (ageEntries.getSelectedItem();),出现错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

有什么想法吗?

编辑代码:

class putInAgeListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {

Object myAge = ageEntries.getSelectedItem();

String myAgeData = myAge.toString();

int i = Integer.parseInt(myAgeData);

System.out.print(i);

}
}

最佳答案

1) 此语句为空,您可能想从当前选定的 Item 中获取 Integer/Object/String

Integer / Object / String myWhatever = ageEntries.getSelectedItem();

2) 最好使用 ItemListener对于JComboBox , 而不是 ActionListener ,注意 ItemListener 触发事件 SELECTED/DESELECTED,总是两次

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ComboBoxListeners {

private JFrame f;
private JComboBox flyFromCombo;
private JComboBox flyToCombo;
private JLabel tripLabel = new JLabel();
private Object[] itemsFrom;
private Object[] itemsTo;

public ComboBoxListeners() {
itemsFrom = new Object[]{"-", "First - From", "Second - From", "Third - From"};
itemsTo = new Object[]{"-", "First - To", "Second - To", "Third - To"};
//flyFromCombo.setPrototypeDisplayValue("################################################");
flyFromCombo = new JComboBox(itemsFrom);
flyFromCombo.addItemListener(new ItemListener() {

@Override
public void itemStateChanged(ItemEvent e) {
if ((e.getStateChange() == ItemEvent.SELECTED)) {
String str = flyFromCombo.getSelectedItem().toString();
String str1 = flyToCombo.getSelectedItem().toString();
setLabelText(str, str1);
}
}
});
flyToCombo = new JComboBox(itemsTo);
flyToCombo.addItemListener(new ItemListener() {

@Override
public void itemStateChanged(ItemEvent e) {
if ((e.getStateChange() == ItemEvent.SELECTED)) {
String str = flyFromCombo.getSelectedItem().toString();
String str1 = flyToCombo.getSelectedItem().toString();
setLabelText(str, str1);
}
}
});
tripLabel.setPreferredSize(new Dimension(400, 30));
f = new JFrame("ComboBox ItemListeners");
f.setLayout(new GridLayout(0, 1, 15, 15));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(flyFromCombo);
f.add(flyToCombo);
f.add(tripLabel);
f.setLocation(150, 150);
f.pack();
f.setVisible(true);
}

private void setLabelText(String str1, String str2) {
String textForLabel = "";
String helpStringFirst = str1.trim();
if (helpStringFirst != null && helpStringFirst.length() > 0) {
if (!helpStringFirst.equals("-")) {
textForLabel = "Flight No57. from : " + helpStringFirst;
} else {
textForLabel = "Flight from Un-Know : ";
}
}
String helpStringSecond = str2.trim();
if (helpStringSecond != null && helpStringSecond.length() > 0) {
if (!helpStringSecond.equals("-")) {
textForLabel = textForLabel + " --> to : " + helpStringSecond;
} else {
textForLabel += " to : Un-Know ";
}
}
final String pushTextForLabel = textForLabel;
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
tripLabel.setText(pushTextForLabel);
}
});
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
ComboBoxListeners comboBoxListeners = new ComboBoxListeners();
}
});
}
}

编辑

我没有(也不想)JDK7,

enter image description here

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;

public class ComboBoxListeners {

private JFrame f;
private JComboBox flyFromCombo;
private JLabel tripLabel = new JLabel();

public ComboBoxListeners() {
ArrayList<Integer> ageList = new ArrayList<Integer>();
for (int i = 1; i <= 100; ++i) {
ageList.add(i);
}
DefaultComboBoxModel modelAge = new DefaultComboBoxModel();
for (Integer i : ageList) {
modelAge.addElement(i);
}
flyFromCombo = new JComboBox(modelAge);
flyFromCombo.addItemListener(new ItemListener() {

@Override
public void itemStateChanged(ItemEvent e) {
if ((e.getStateChange() == ItemEvent.SELECTED)) {
String str = flyFromCombo.getSelectedItem().toString();
tripLabel.setText("Selected Age From JComboBox is : " + str);
}
}
});
tripLabel.setPreferredSize(new Dimension(400, 30));
f = new JFrame("ComboBox ItemListeners");
f.setLayout(new GridLayout(0, 1, 15, 15));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(flyFromCombo);
f.add(tripLabel);
f.setLocation(150, 150);
f.pack();
f.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
ComboBoxListeners comboBoxListeners = new ComboBoxListeners();
}
});
}
}

关于java - JComboBox 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440368/

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