基本思路
画图板需要满足的功能有:
画线,画三角形,画矩形,画多边形,画曲线
设置不同颜色的画笔
改变窗口大小或最小化窗口后重新打开时图案不消失
画图方法的编写:
创建一个类,继承JPanel类,重写JPanel的绘制方法,重写方法时写上原有的绘制方法,再添加绘制已有的图形的方法。(为了在改变窗口大小和最小化窗口后再打开时图案不消失)
在画图方法中首先创建一个窗体,设置好各项参数后,将窗体设置边框布局。由于继承了JPanel类,重写的JPanel的绘制方法对于this生效,所以this为画图部分的面板,将this设置背景色为白色,添加到边框布局的中央。再创建一个面板对象(此面板对象用于存放按钮),设置一个背景色并放在边框布局的上方。
由于接下来的按钮和画图面板都需要监听器,于是创建Listener类。Listener类实现ActionListener,MouseListener,MouseMotionListener的接口。Listener类需要重写这些监听器接口的所有方法。
创建字符串数组存放画图形状的名称,接着使用for循环,将字符串添加到各个按钮上,再将按钮添加到面板对象中,最后再给按钮加上按钮监听器;接着再创建颜色类的数组存放各种颜色,同样使用for循环,将颜色设置成按钮的背景色,再将按钮添加到边框布局上方的面板对象中,再给按钮添加监听器。最后再在面板上获取画笔并添加上鼠标监听器。
package draw0924;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class drawframe extends JPanel{
public static void main(String[] args) {
drawframe dr=new drawframe();
dr._draw();
}
private Shape[] shape;
public void _draw() {
JFrame jf=new JFrame();
jf.setSize(800,800);
jf.setTitle("画图窗口");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setLayout(new BorderLayout());//设置边框布局
JPanel panel=new JPanel();//创建一个面板对象
panel.setBackground(Color.GREEN);
jf.add(panel,BorderLayout.NORTH);//添加到边框布局的上方
Listener butt=new Listener();//创建监听器类,并创建一个监听器对象
String[] str= {
"画线","画三角形","画矩形","画多边形","画曲线"};//创建字符串数组存储按钮文字
for(int i=0;i<str.length;i++) {
JButton jbu=new JButton(str[i]);//创建按钮对象并把按钮文字添加上
panel.add(jbu);//将按钮添加到面板对象上
jbu.addActionListener(butt);//给按钮添加监听器
}
Color[] color= {
Color.RED,Color.BLUE,new Color(104,150,144)};//创建颜色数组存储画笔颜色
for(int i=0;i<color.length;i++) {
JButton jbu=new JButton();//创建按钮对象
jbu.setBackground(color[i]);//将按钮背景设置颜色
panel.add(jbu);//将按钮添加到面板对象上
jbu.setPreferredSize(new Dimension(30,30));//设置按钮大小
jbu.addActionListener(butt