我必须编写一个Java代码,我应该从2个不同的组合框输入。我将获得的输入必须显示在文本字段中。我已经编写了部分代码,但我无法获得输入。
这是我到目前为止所写的:
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);
}
}
}
答案 0 :(得分:1)
String choice1 = event.getItem().toString();
String choice2 = event.getItem().toString();
您一次只能为一个组合框生成一个事件,因此如果您想要组合框中的值,您需要访问组合框,而不是事件。
代码如下:
String choice1 = dita.getSelectedItem().toString();
String choice2 = ora.getSelectedItem().toString();
答案 1 :(得分:1)
您可以使用getSelectedItem()
方法,使用强制转换为String
。或者,您可以将getItemAt
与getSelectedIndex
和通用JComboBox<String>
用于您的字段 - 这样做的好处是编译时安全类型,而且不需要强制转换。
String sd = (String)dita.getSelectedItem();
String so = (String)ora.getSelectedItem();
或
String sd = dita.getItemAt(dita.getSelectedIndex());
String so = ora.getItemAt(ora.getSelectedIndex());
第二种方法的另一个优点是,您可以使用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);
检测用户何时未做出选择
您还应该知道,对于您的代码,即使用户尚未选择项目,它也会返回组合框中的第一项。因此,您可能希望添加一个&#34;选择一个项目...&#34;任何其他条目之前的字符串。例如:
dita.addItem("Select a day ...");
dita.addItem("E Hene");
...
// inside the listener
if (dita.getSelectedIndex() == 1) { // no choice made yet }