Причина уже была объяснена (cmdExit_pressed
никогда не используется).Вот как ваша программа будет написана ближе к современным стандартам:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.*;
public class DayGUI extends JFrame {
private JFrame mainFrame;
private JButton cmdGood;
private JButton cmdBad;
private JButton cmdAverage;
private JButton cmdExit;
public DayGUI()
{
mainFrame = new JFrame("How are you feeling today?");
cmdGood = new JButton("Good");
cmdGood.setBackground(Color.GREEN);
cmdBad = new JButton("Bad");
cmdBad.setBackground(Color.RED);
cmdAverage = new JButton("Average");
cmdAverage.setBackground(Color.WHITE);
cmdExit = new JButton("Exit");
cmdExit.setBackground(Color.WHITE);
Container c = mainFrame.getContentPane();
c.setLayout(new FlowLayout());
c.add(cmdGood);
c.add(cmdBad);
c.add(cmdAverage);
c.add(cmdExit);
cmdGood.setMnemonic('G');
cmdBad.setMnemonic('B');
cmdAverage.setMnemonic('A');
cmdExit.setMnemonic('E');
mainFrame.setSize(280, 100);
mainFrame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {System.exit(0);}
});
cmdGood.addActionListener(new ActionListener() {
public void actionPerformed() {
JOptionPane.showMessageDialog(null, "Today is a good day!",
"I'm Feeling Happy!", JOptionPane.INFORMATION_MESSAGE);
}
});
cmdBad.addActionListener(new ActionListener() {
public void actionPerformed() {
JOptionPane.showMessageDialog(null, "I'm having a bad day today!",
"I'm Feeling Sad!", JOptionPane.INFORMATION_MESSAGE);
}
});
cmdAverage.addActionListener(new ActionListener() {
public void actionPerformed() {
JOptionPane.showMessageDialog(null, "I'm having an average day!",
"I'm Feeling In The Middle", JOptionPane.INFORMATION_MESSAGE);
}
});
cmdExit.addActionListener(new ActionListener() {
public void actionPerformed() {
System.exit();
}
});
mainFrame.show();
}
public static void main(String args[])
{
new DayGUI();
}
}
Таким образом, каждая кнопка получает свой собственный ActionListener, и вам не нужно делать это if (source == ...)
сравнений.
Еще лучше было бы использовать Action
объекты (т.е. анонимные подклассы AbstractAction) здесь.