package test8;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PaintFigureAll2 extends JFrame implements ActionListener{
JButton jbtnT;//三角形按钮
JButton jbtnR;//矩形按钮
JButton jbtnE;//椭圆按钮
JPanel jpNorth;//按钮面板
JPanel jpMain;//绘图面板
int l=1;
final int total=16;
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==jbtnT) {
if(l<=total) {
jpMain.add(new Triangle());
jpMain.repaint();
jpMain.validate();
l++;
}
}
else if(e.getSource()==jbtnR) {
if(l<=total) {
jpMain.add(new Rectangles());
jpMain.repaint();
jpMain.validate();
l++;
}
}
else if(e.getSource()==jbtnE) {
if(l<=total) {
jpMain.add(new Ellipse());
jpMain.repaint();
jpMain.validate();
l++;
}
}
}
public PaintFigureAll2() {
super("绘制形状");
jbtnT=new JButton("三角形");
jbtnR=new JButton("矩形");
jbtnE=new JButton("椭圆形");
jpNorth=new JPanel();
jpNorth.add(jbtnT);
jpNorth.add(jbtnR);
jpNorth.add(jbtnE);
jbtnT.addActionListener(this);//!!!!监听器对象是自己
jbtnR.addActionListener(this);
jbtnE.addActionListener(this);
jpMain=new JPanel();
jpMain.setLayout(new GridLayout(4,4));//绘图面板布局
Container con=this.getContentPane();
con.add(jpNorth,BorderLayout.NORTH);
con.add(jpMain);
this.setSize(500,400);
this.setVisible(true);
this.setLocationRelativeTo(null);//自动居中,不能写在this.setSize()前面
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
PaintFigureAll2 pfa=new PaintFigureAll2();
}
class Rectangles extends JPanel{ //绘制三角形类
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width=this.getSize().width;//面板宽与高
int height=this.getSize().height;
g.setColor(Color.red);
g.fillRect(0,0,width,height);
}
}
class Triangle extends JPanel{ //绘制矩形类
public void paintComponent(Graphics g) {//不要写成paintComponemt不会报错,但是三角形不会显示
super.paintComponent(g);
int width=this.getSize().width;//面板宽与高
int height=this.getSize().height;
g.setColor(Color.blue);
Polygon p=new Polygon();
p.addPoint(width/2,0);
p.addPoint(0,height);
p.addPoint(width,height);
g.fillPolygon(p);
}
}
class Ellipse extends JPanel{ //绘制椭圆类
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width=this.getSize().width;//面板宽与高
int height=this.getSize().height;
g.setColor(Color.yellow);
g.fillOval(0,0,width,height);
}
}
}
Java | 按钮画三种图形
最新推荐文章于 2022-02-26 13:32:36 发布