JComboBox返回值

编程入门 行业动态 更新时间:2024-10-28 05:21:53
本文介绍了JComboBox返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

使用哪种方法返回用户选择的选择?

What method is used to return the selection chosen by the user?

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();)时,出现错误:

When the last line is added (ageEntries.getSelectedItem();), I get an error:

线程"AWT-EventQueue-0"中的异常java.lang.NullPointerException

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

1) this statement is empty and probably you want to get Integer / Object / String value from currently selected Item

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

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

2) better would be use ItemListener for JComboBox, rather than ActionListener, notice ItemListener fired events SELECTED/DESELECTED, always twice

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,

I haven't (and don't want too) JDK7,

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(); } }); } }

更多推荐

JComboBox返回值

本文发布于:2023-10-26 14:43:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1530447.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:返回值   JComboBox

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!