62,614
社区成员
发帖
与我相关
我的任务
分享
/**
*
*/
package chap08;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @version 1.0
* @date 2014-06-28
* @author jowei
*
*/
public class ButtonFrame extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//Frame1 f = new Frame1();
Frame2 f = new Frame2();
//Frame3 f = new Frame3();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//f.pack();
f.setVisible(true);
}
}
/**
* descr:private local class implements ActionListener.
* @version 1.0 2014-07-03
*
* */
class Frame1 extends JFrame {
public Frame1() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
add(buttonPanel, BorderLayout.EAST);
JButton btnYellow = new JButton(BG_YELLOW);
JButton btnBlue = new JButton(BG_BLUE);
JButton btnRed = new JButton(BG_RED);
buttonPanel.add(btnYellow);
buttonPanel.add(btnBlue);
buttonPanel.add(btnRed);
ColorAction yellowAction = new ColorAction(Color.YELLOW);
ColorAction bluewAction = new ColorAction(Color.BLUE);
ColorAction redAction = new ColorAction(Color.RED);
btnYellow.addActionListener(yellowAction);
btnBlue.addActionListener(bluewAction);
btnRed.addActionListener(redAction);
}
private class ColorAction implements ActionListener {
public ColorAction(Color c) {
this.backgroundColor = c;
}
@Override
public void actionPerformed(ActionEvent e) {
buttonPanel.setBackground(this.backgroundColor);
}
private Color backgroundColor;
}
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
private static final String BG_YELLOW = "Yellow";
private static final String BG_BLUE = "Blue";
private static final String BG_RED = "Red";
}
/**
* descr:anonymous inner class implements ActionListener.
* */
class Frame2 extends JFrame {
public Frame2() {
//setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
add(buttonPanel, BorderLayout.CENTER);
makeButton(Frame2.BG_YELLOW, Color.YELLOW);
makeButton(Frame2.BG_BLUE, Color.BLUE);
makeButton(Frame2.BG_RED, Color.RED);
}
private void makeButton(String name, final Color bgColor) {
JButton btn = new JButton(name);
buttonPanel.add(btn);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonPanel.setBackground(bgColor);
}
});
}
@Override
public void setPreferredSize(Dimension preferredSize) {
super.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
}
@Override
public Dimension getPreferredSize() {
return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
@Override
public void setMinimumSize(Dimension minimumSize) {
super.setMinimumSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT));
}
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
private static final String BG_YELLOW = "Yellow";
private static final String BG_BLUE = "Blue";
private static final String BG_RED = "Red";
}
class Frame3 extends JFrame {
public Frame3() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
add(buttonPanel, BorderLayout.CENTER);
Action yellowAction = new ColorAction(Frame3.BG_YELLOW, Color.YELLOW);
Action blueAction = new ColorAction(Frame3.BG_BLUE, Color.BLUE);
Action redAction = new ColorAction(Frame3.BG_RED, Color.RED);
Action testAction = new ColorAction("test", Color.RED);
makeButton(yellowAction);
makeButton(blueAction);
makeButton(redAction);
makeButton(testAction);
}
private void makeButton(Action act) {
JButton button = new JButton(act);
buttonPanel.add(button);
}
private class ColorAction extends AbstractAction {
public ColorAction(String name, Color color) {
putValue(Action.NAME, name);
putValue(ColorAction.COLOR_NAME, color);
putValue(Action.SHORT_DESCRIPTION, "Set panel color to " + name.toLowerCase());
}
@Override
public void actionPerformed(ActionEvent e) {
Color c = (Color) getValue(ColorAction.COLOR_NAME);
buttonPanel.setBackground(c);
}
private final static String COLOR_NAME = "color";
}
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
private static final String BG_YELLOW = "Yellow";
private static final String BG_BLUE = "Blue";
private static final String BG_RED = "Red";
}