gpt4 book ai didi

java - 如何根据 JComboBox 选择更改 JTextField

转载 作者:行者123 更新时间:2023-11-29 03:33:51 25 4
gpt4 key购买 nike

这只是我在学校做的一个愚蠢的程序,但我遇到了一些麻烦。我有一个 JComboBox,根据用户的选择,我想更改文本字段。然而,我在这方面遇到了一些麻烦,因为现在程序编译并运行但文本字段没有改变。我发现了很多人们做复杂得多的事情的例子,但我只需要一个简单的解决方案。这是代码。谢谢!

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

public class emocon extends JFrame implements ItemListener {
JPanel row1 = new JPanel();
JComboBox choose = new JComboBox();
JPanel row2 = new JPanel();
JTextField text = new JTextField(10);
//image will be displayed here
JPanel row3 = new JPanel();
JLabel pic = new JLabel();

//Images
ImageIcon happy = new ImageIcon("images/happy.gif");
ImageIcon lol = new ImageIcon("images/lol.gif");
ImageIcon winky = new ImageIcon("images/winky.gif");
ImageIcon sad = new ImageIcon("images/sad.gif");
ImageIcon worried = new ImageIcon("images/worried.gif");
ImageIcon angry = new ImageIcon("images/angry.gif");
ImageIcon shock = new ImageIcon("images/shock.gif");
ImageIcon uninpressed = new ImageIcon("images/uninpressed.gif");
ImageIcon yawn = new ImageIcon("images/yawn.gif");
ImageIcon evil = new ImageIcon("images/evil.gif");

public emocon(){
setTitle("Emoticon Converter");
setSize(350,350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

GridLayout two = new GridLayout(3,1);
setLayout(two);
choose.addItem("Happy");
choose.addItem("LOL");
choose.addItem("Winky");
choose.addItem("Sad");
choose.addItem("Worried");
choose.addItem("Angry");
choose.addItem("Shock");
choose.addItem("Uninpressed");
choose.addItem("Yawn");
choose.addItem("Evil");
choose.addItemListener(this);
row1.add(choose);
row2.add(text);
row3.add(pic);
add(row1);
add(row2);
add(row3);

}
@Override
public void itemStateChanged(ItemEvent item) {
Object source = item.getSource();
String emo = source.toString();
if (emo == "Sad"){
text.setText("hjgjhg");
}
}
public static void main(String[] args) {
emocon emo = new emocon();
}
}

最佳答案

你这里有问题:

if (emo == "Sad"){
text.setText("hjgjhg");
}

不要使用 == 比较字符串。请改用 equals(...)equalsIgnoreCase(...) 方法。了解 == 检查两个 对象 是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是最重要的。所以不是

if (fu == "bar") {
// do something
}

做,

if ("bar".equals(fu)) {
// do something
}

或者,

if ("bar".equalsIgnoreCase(fu)) {
// do something
}

编辑

您的另一个问题是您只是从 ItemEvent 获取源。来源是 JComboBox,而不是您想要的。您需要获取所选项目!

尝试使用 ItemEvent 对象中可用的不同方法,而不是 getSource()

关于java - 如何根据 JComboBox 选择更改 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555691/

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