Java 如何从两个不同的组合框中获取输入?

Java 如何从两个不同的组合框中获取输入?,java,swing,jcombobox,Java,Swing,Jcombobox,我必须编写一个Java代码,从两个不同的组合框中获取输入。我将获得的输入必须显示在文本字段中。我已经写了一部分代码,但无法获得输入 这是我到目前为止写的: package main; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ComboI extends JFrame implements ItemListener{ JComboBox dita = new JCombo

我必须编写一个Java代码,从两个不同的组合框中获取输入。我将获得的输入必须显示在文本字段中。我已经写了一部分代码,但无法获得输入

这是我到目前为止写的:

package main;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ComboI extends JFrame implements ItemListener{
    JComboBox dita = new JComboBox();
    JComboBox ora = new JComboBox();
    JLabel dita1 = new JLabel("Zgjidhni diten:");
    JLabel ora1 = new JLabel("Zgjidhni oren");
    JTextArea pergjigje = new JTextArea(2, 10);
    public ComboI(){
        super("Orari mesimor IE102");
        setSize(600, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        Container content = getContentPane();
        FlowLayout lay = new FlowLayout(FlowLayout.LEFT);
        content.setLayout(lay);
        content.add(dita);
        content.add(dita1);
        content.add(ora1);
        content.add(ora);
        content.add(pergjigje);
        setContentPane(content);

        dita.addItem("E Hene");
        dita.addItem("E Marte");
        dita.addItem("E Merkure");
        dita.addItem("E Enjte");
        dita.addItem("E Premte");
        dita.addItemListener(this);


        ora.addItem("08:30 - 09:25");
        ora.addItem("09:30 - 10:25");
        ora.addItem("10:30 - 11:25");
        ora.addItem("11:30 - 12:25");
        ora.addItem("12:30 - 13:25");
        ora.addItem("13:30 - 14:25");
        ora.addItemListener(this);

    }
    public void itemStateChanged(ItemEvent event){
        String choice1 = event.getItem().toString();
        String choice2 = event.getItem().toString();

        if (choice1.equals("E Marte") && choice2.equals("E Marte")){
            String a = "hi";
            pergjigje.setText(a);
        }
    }
}
一次只能为一个组合框生成一个事件,因此如果希望从组合框中获取值,则需要访问组合框,而不是事件

代码类似于:

String choice1 = dita.getSelectedItem().toString();
String choice2 = ora.getSelectedItem().toString();

您可以使用
getSelectedItem()
方法,将强制转换为
String
。或者,您可以将
getItemAt
getSelectedIndex
一起使用,并为您的字段使用一个通用的
JComboBox
——这具有编译时类型安全的优点,并且不需要强制转换

String sd = (String)dita.getSelectedItem();
String so = (String)ora.getSelectedItem();

第二种方法的另一个优点是,您可以使用
getSelectedIndex
从数组中获取一周中的一天或一个时间段,而无需解析文本。例如:

// using java 8 for the java.time.DayOfWeek enum
DayOfWeek day = DayOfWeek.of(dita.getSelectedIndex());
// simply storing the hour of the time selection
int hour = ora.getSelectedIndex();
// using joda time for time without dates
//   with org.joda.time.LocalTime
LocalTime time = new LocalTime(ora.getSelectedIndex() + 7, 30);
dita.addItem("Select a day ...");
dita.addItem("E Hene");
...
// inside the listener
if (dita.getSelectedIndex() == 1) { // no choice made yet }
检测用户何时未进行选择

您还应该知道,对于您的代码,即使用户尚未选择项目,它也会返回组合框中的第一个项目。因此,您可能希望在任何其他条目之前添加“选择项…”字符串。例如:

// using java 8 for the java.time.DayOfWeek enum
DayOfWeek day = DayOfWeek.of(dita.getSelectedIndex());
// simply storing the hour of the time selection
int hour = ora.getSelectedIndex();
// using joda time for time without dates
//   with org.joda.time.LocalTime
LocalTime time = new LocalTime(ora.getSelectedIndex() + 7, 30);
dita.addItem("Select a day ...");
dita.addItem("E Hene");
...
// inside the listener
if (dita.getSelectedIndex() == 1) { // no choice made yet }

谢谢你的帮助。请你帮我处理代码的另一部分好吗?它应该在文本区域设置文本。此文本应与输入相关。如果(choice1.equals(“E Marte”)和&choice2.equals(“E Marte”){String a=“hi”;pergjigje.setText(a);每个线程一个问题。您应该“接受”当它解决了最初的问题,这样人们就知道问题已经解决了。关于你的后续问题,它没有意义。choice1和choice2永远不能包含相同的值,因为它们代表不同组合框的值。事实上,这是一个错误,我只是在编写代码时忘了更改它,它应该是choice1.equals(“E Marte”)和&choice2.equals(“09:30-10:25”)很抱歉,我是这个网站的新手,我现在还不知道它到底是如何工作的,thnx非常非常非常非常多地改变了获取输入的部分,但我的代码还不起作用。你能帮助我吗?