import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleGUI3 implements ActionListener{
JFrame frame;
public static void main(String[] args) {
SimpleGUI3 g = new SimpleGUI3();
g.go();
}
public void go(){
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Change Color");
button.addActionListener(this);
MyDrawPanel drawpanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH , button);
frame.getContentPane().add(BorderLayout.CENTER , drawpanel);
frame.setSize(1080 , 1080);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
}
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 , 150 ,150 ,EndColor);
g2d.setPaint(gradient);
g2d.fillOval(70, 70, 150, 150);
}
}
**按钮有多个的实现方法:利用内部类来实现**
内部类实例创建的方法 : 先创建外部类的实例,利用外部类的实例来创建内部类
public class Foo {
public static void main(String[] args) {
MyOuter outerOBJ = new Myouter();
outerOBJ.MyInneerOBJ inner = new MyInnerOBJ();
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Gui {
JFrame frame;
JLabel label;
public static void main(String[] args) {
Gui g = new Gui();
g.go();
}
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("I'am a Label!");
JButton LabelButton = new JButton("Change Label");
LabelButton.addActionListener(new LabelListener());
JButton ColorButton = new JButton("Change Color");
ColorButton.addActionListener(new ColorListener());
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH , ColorButton);
frame.getContentPane().add(BorderLayout.CENTER , drawPanel);
frame.getContentPane().add(BorderLayout.WEST , label);
frame.getContentPane().add(BorderLayout.EAST , LabelButton);
frame.setSize(300 , 300);
frame.setVisible(true);
}
class LabelListener implements ActionListener{
public void actionPerformed(ActionEvent event) {
label.setText("Ouch!");
}
}
class ColorListener implements ActionListener{
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
}
}
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 , 150 ,150 ,EndColor);
g2d.setPaint(gradient);
g2d.fillOval(70, 70, 150, 150);
}
}