import java.awt.*;
import java.awt.event.*;
class MyTest {
public static void main(String args[]){
MyFrame frame= new MyFrame ();
frame.show();
}
}class MyFrame extends Frame{
public MyFrame (){
this.setTitle("测试按钮事件");
this.setSize(200,200);
MyPanel panel =new MyPanel();
this.add(panel);
}
}
class MyPanel extends Panel{
public MyPanel(){
Button bButton=new Button("蓝色");
Button gButton=new Button("绿色");
Button rButton=new Button("红色");
Button eButton=new Button("退出");
this.add(bButton);
this.add(gButton);
this.add(rButton);
this.add(eButton);
/* MyListenerAction baction=new MyListenerAction(Color.blue);
MyListenerAction gaction=new MyListenerAction(Color.green);
MyListenerAction raction=new MyListenerAction(Color.red);
MyListenerAction eaction=new MyListenerAction(Color.white);*/
rButton.addActionListener(new MyListenerAction(Color.red));//注册监听器
gButton.addActionListener(new MyListenerAction(Color.green));
bButton.addActionListener(new MyListenerAction(Color.blue));
eButton.addActionListener(new MyListenerAction(Color.red));
}
class MyListenerAction implements ActionListener{ //实现监听器
private Color bgColor;
public MyListenerAction(Color c){
bgColor=c;
}
public void actionPerformed(ActionEvent e){
setBackground(bgColor); //????
repaint();
if(e.getActionCommand()=="退出")
System.exit(0);
}
}
}我想知道的是actionPerformed(ActionEvent e)中setBackground(bgColor);这一句话为什麽改变的是
面板的背景色?而不是其他组件的背景色?谢谢!
import java.awt.Color;
import java.awt.Font;
import javax.swing.UIManager;public final class SetFont
{ public SetFont()
{
} public static void setFontSimple(Font font)
{
javax.swing.plaf.FontUIResource fontRes = new javax.swing.plaf.FontUIResource(font);
java.util.Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements())
{
Object key = keys.nextElement();
Object value = UIManager.get (key);
if (value instanceof javax.swing.plaf.FontUIResource)
UIManager.put (key, fontRes);
}
}
public static void setFont(Font font)
{
UIManager.put("Label.font", font);
UIManager.put("Button.font", font);
UIManager.put("Menu.font", font);
UIManager.put("MenuItem.font", font);
UIManager.put("CheckBoxMenuItem.font", font);
UIManager.put("CheckBoxButtonMenuItem.font", font);
UIManager.put("RadioButtonMenuItem.font", font);
UIManager.put("RadioMenuItem.font", font);
UIManager.put("JRadioMenuItem.font", font);
UIManager.put("List.font", font);
UIManager.put("CheckBox.font", font);
UIManager.put("RadioButton.font", font);
UIManager.put("ComboBox.font", font);
UIManager.put("TextArea.font", font);
UIManager.put("Table.font", font);
UIManager.put("TableHeader.font", font);
UIManager.put("TabbedPane.font", font);
UIManager.put("Pane.font", font);
UIManager.put("Frame.font", font);
UIManager.put("EditorPane.font", font);
UIManager.put("OptionPane.font", font);
UIManager.put("JOptionPane.font", font);
UIManager.put("TextPane.font", font);
UIManager.put("TextField.font", font);
UIManager.put("PasswordField.font", font);
UIManager.put("Dialog.font", font);
UIManager.put("Toolbar.font", font);
UIManager.put("ToolTip.font", font);
UIManager.put("Slider.font", font);
UIManager.put("Progress.font", font);
UIManager.put("FileChooser.font", font);
UIManager.put("ColorChooser.font", font);
UIManager.put("TitledBorder.font", font);
}
}
未明白
要改变按钮背景色,因为你分了N个类,有监听类是内部类,你可以把按钮定义成成员组件,然后设置它的背景色