import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TwoButtons
{
JFrame frame=new JFrame();
JLabel label=new JLabel();
public static void main(String [] args)
{
TwoButtons gui=new TwoButtons();
gui.go();
}
public void go()
{
frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton labelButton=new JButton("Change Label");
labelButton.addActionListener(new LableListener());//相对将this传给监听的注册方法,现在传给的是对应的实例
JButton colorButton=new JButton("Change Color");
colorButton.addActionListener(new ColorListener());
label=new JLabel("l'm a label");
MyDrawPanel drawPanel=new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH,colorButton);
frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
frame.getContentPane().add(BorderLayout.EAST,labelButton);
frame.getContentPane().add(BorderLayout.WEST,label);
frame.setSize(500,500);
frame.setVisible(true);
}
class LableListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
label.setText("Ouch!");//内部可以存取label
}
}
class ColorListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
frame.repaint();//直接存取frame,不需要明确指定外部类的引用
}
}
}
import javax.swing.*;
import java.awt.*;
public class MyDrawPanel extends JPanel
{
public void paintComponent(Graphics g)
{
Graphics2D g2d=(Graphics2D)g;
int red=(int)(Math.random()*255);
int blue=(int)(Math.random()*255);
int green=(int)(Math.random()*255);
Color startColor=new Color(red,green,blue);
red=(int)(Math.random()*255);
blue=(int)(Math.random()*255);
green=(int)(Math.random()*255);
Color endColor=new Color(red,green,blue);
GradientPaint gradient=new GradientPaint(70,70,startColor,100,100,endColor);
g2d.setPaint(gradient);
g2d.fillOval(70,70,100,100);
}
}