【问题标题】:Why do the JOptionpanes not appear?为什么 JOptionpanes 不出现?
【发布时间】:2020-10-07 13:52:48
【问题描述】:

我创建了一个 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);
    }
}

【问题讨论】:

  • 如果我的解决方案对您有用,请考虑接受它作为正确答案并关闭问题。快乐编码:)

标签: java swing jcombobox joptionpane


【解决方案1】:

在您的 if 语句中,而不是像您在代码中那样将 JComboBox 对象与字符串进行比较,如下所示:

genreAuswahl.equals("Lo-Fi")

比较实际选中的项目(是一个String对象):

genreAuswhal.getSelectedItem().equals("Lo-Fi")

对其他 if 控件也这样做,您的代码应该可以按预期工作。我在本地尝试过并为我工作。

您的任何 if 语句都不起作用的原因是 JComboBox 永远不能等于 String 对象。

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多