在GUI上绘图

在GUI上添加东西的3种方法:
1.在frame上放置widget:

frame.getContentPane().add(widget);

2.在widget上绘制2D图形;
3.在widget上绘制JPEG图。

2与3均使用graphics对象来绘制图;

创建绘图组件

方法2:显示绘制的2D图形

创建出自己的widget,并将其放到frame上

创建JPanel的子类,并且重写paintComponent()这个方法

public class MyDrawPanel extends JPanel {
	public void paintComponent(Graphics g) {

		g.setColor(Color.orange);

		g.fillRect(20, 50, 100, 100);
	}
}
//设置颜色:
g.setColor(Color.orange);//设为orange的颜色
//设置随机颜色:
int red = (int) (Math.random() * 255);
int green = (int) (Math.random() * 255);
int blue = (int) (Math.random() * 255);
		
Color randomColor = new Color(red,green,blue);
g.setColor(randomColor);


//画矩形:
g.fillRect(20, 50, 100, 100);
//参数分别起始X坐标,起始Y坐标,宽度,高度。
//画椭圆:
g.fillOval(20,50,100,100)
//参数分别起始X坐标,起始Y坐标,X轴长度,Y轴长度。

测试代码:

public static void main(String[] args) {
		JFrame frame = new JFrame();

		MyDrawPanel myDraw = new MyDrawPanel();

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		frame.getContentPane().add(myDraw);

		frame.setSize(300, 300);

		frame.setVisible(true);
	}

效果:生成orange的矩形框
在GUI上绘图_第1张图片
在GUI上绘图_第2张图片
随机生成颜色:理论上来说每次都不一样
在GUI上绘图_第3张图片
在GUI上绘图_第4张图片
在GUI上绘图_第5张图片

方法3:显示JPEG图像

public void paintComponent(Graphics g) {

		Image image = new ImageIcon("JPEG图像名").getImage();

		g.drawImage(image, 3, 4, this);

	}

Graphics与Graphics2D

public void paintComponent(Graphics g) 

参数g是个Graphics对象,但是实际所引用的时Graphics的子类Graphics2D(多态)。

Graphics2D在Graphics的基础上实现其他的功能,但是以Graphics对象声明的g无法使用,因此需要对g进行转换:

Graphics2D g2d = (Graphics2D) g;

在获得事件时,绘制图形

public class ChangeColor {
	JFrame frame;
	JButton button;
	
	public void go() {
		frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		button = new JButton("Button");
		button.addActionListener((ActionListener) new Button());

		MyDrawPanel myDraw = new MyDrawPanel();
		
		frame.getContentPane().add(BorderLayout.SOUTH, button);
		frame.getContentPane().add(BorderLayout.CENTER, myDraw);
		
		frame.setSize(300, 300);
		frame.setVisible(true);
	}
	
	class Button implements ActionListener {

		public void actionPerformed(ActionEvent event) {
			frame.repaint();
		}
	}
	
	public static void main(String[] args) {
		ChangeColor tb = new ChangeColor();
		tb.go();
	}
}
public class MyDrawPanel extends JPanel {
	public void paintComponent(Graphics g) {

		int red = (int) (Math.random() * 255);
		int green = (int) (Math.random() * 255);
		int blue = (int) (Math.random() * 255);
		
		Color randomColor = new Color(red,green,blue);
		
		g.setColor(randomColor);

		g.fillRect(20, 50, 100, 100);
	}
}

效果:
在GUI上绘图_第6张图片
点击按钮后:
在GUI上绘图_第7张图片

你可能感兴趣的:(在GUI上绘图)