如何解决为什么JOptionpanes没有出现?
我已经创建了一个JCombobox,并希望当在框中选择某个项目时,出现相应的ConfirmDialogs / MessageDialogs。我做错了什么?因为不幸的是,当我单击按钮“ okBtn”时,什么也没有发生:/ 我已经尝试了很多东西,但不幸的是,我仍然受困,希望得到任何帮助(: 我的代码:
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MusicGenre extends JFrame {
String MusicGenre[] = {"Lo-Fi","Future-House","Deep-House","Anderes"};
public MusicGenre() {
setTitle("Genre-Auswahl");
setSize(250,250);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4,2));
JLabel frage = new JLabel("An welches Genre denkst du?");
panel.add(frage);
JComboBox genreAuswahl = new JComboBox(MusicGenre);
panel.add(genreAuswahl);
JButton okBtn = new JButton("Okay");
okBtn.setBackground(Color.BLACK);
okBtn.setForeground(Color.GREEN);
okBtn.setBorder(new LineBorder(Color.RED));
okBtn.setOpaque(true);
JButton backBtn = new JButton("Zurück");
backBtn.setBackground(Color.BLACK);
backBtn.setForeground(Color.RED);
backBtn.setBorder(new LineBorder(Color.RED));
backBtn.setOpaque(true);
okBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
if (genreAuswahl.equals("Lo-Fi")){
int lofi = JOptionPane.showConfirmDialog(null,"Produzierst du selber Musik?");
if (lofi == JOptionPane.YES_OPTION){
JOptionPane.showMessageDialog(null,"Meine Idee: Erstelle einen Lo-Fi Beat");
System.exit(0);
}else {
JOptionPane.showMessageDialog(null,"Meine Idee: Hör dir Lo-Fi an");
System.exit(0);
}
if (genreAuswahl.equals("Future-House")){
int fh = JOptionPane.showConfirmDialog(null,"Produzierst du selber Musik?");
if (fh == JOptionPane.YES_OPTION){
JOptionPane.showMessageDialog(null,"Meine Idee: Erstelle einen Future-House Beat");
}else {
JOptionPane.showMessageDialog(null,"Meine Idee: Hör dir Future-House an");
}
if (genreAuswahl.equals("Deep-House")){
int dh = JOptionPane.showConfirmDialog(null,"Produzierst du selber Musik?");
if (dh == JOptionPane.YES_OPTION){
JOptionPane.showMessageDialog(null,"Meine Idee: Erstelle einen Deep-House Beat");
}else {
JOptionPane.showMessageDialog(null,"Meine Idee: Hör dir Deep-House an");
}
if (genreAuswahl.equals("Anderes")){
int other = JOptionPane.showConfirmDialog(null,"Produzierst du selber Musik?");
if (other == JOptionPane.YES_OPTION){
JOptionPane.showMessageDialog(null,"Meine Idee: Erstelle Musik deiner Wahl");
}else {
JOptionPane.showMessageDialog(null,"Hör dir Musik deiner Wahl an");
}
}
}
}
}
}
});
backBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
dispose();
}
});
panel.add(okBtn);
panel.add(backBtn);
add(panel);
setVisible(true);
}
}
解决方法
在if语句中,而不是像在代码中那样将JComboBox对象与字符串进行比较,如下所示:
7
比较实际选择的项目(它是一个String对象):
genreAuswahl.equals("Lo-Fi")
如果其他控件也可以这样做,则您的代码应该可以按预期工作。我在本地尝试过并为我工作。
任何if语句都不起作用的原因是JComboBox永远不能等于String对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。