具体如下:
package Simple_Draw;
public class Draw {
public static void main(String[] args) {
DrawPanel dp = new DrawPanel();
dp.initJFrame();
}
}
package Simple_Draw;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.BevelBorder;
public class DrawPanel extends JFrame{
public Graphics g;
private ButtonGroup bg;
public ArrayList al = new ArrayList();
public void initJFrame(){
this.setTitle("画板");
this.setSize(600, 500);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.Panelleft();
this.Panelbotton();
JPanel panelmiddle = this.Panelmiddle();
this.Menu();
this.setVisible(true);
g = panelmiddle.getGraphics();
PanelMiddleListener pml = new PanelMiddleListener(bg,g,al);
panelmiddle.addMouseListener(pml);
panelmiddle.addMouseMotionListener(pml);
}
}
如上具体思路就是首先主函数入口,为了不让主函数显得复杂化,创建了DrawPanel类的对象,然后调用initJFrame这个方法,由于这个类继承了JFrame窗体类,所以就可以设置窗体布局,总分为三个面板,分为三个方法写,然后再在initJFrame调用三个面板,具体,请结合看:
public void Panelleft(){
JPanel panelleft = new JPanel();
panelleft.setPreferredSize(new Dimension(78,0));
panelleft.setBackground(new Color(240,240,240));
this.add(panelleft,BorderLayout.WEST);
panelleft.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
String [] command ={"wujiao","xuxian","xiangcha","oil","getcolor","biggle","pencil","brush","pentong","font","line","quxian","rect","duobian","oval","ovalrect"};
bg = new ButtonGroup();
for(int i=0;i
public void Panelbotton(){
JPanel panelbotton = new JPanel();
panelbotton.setPreferredSize(new Dimension(0,80));
panelbotton.setBackground(new Color(240,240,240));
this.add(panelbotton,BorderLayout.SOUTH);
panelbotton.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
JPanel panelInner = new JPanel();
panelInner.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
panelInner.setPreferredSize(new Dimension(300,50));
panelbotton.add(panelInner,FlowLayout.LEFT);
JPanel panelInnerleft = new JPanel();
JPanel panelInnerright = new JPanel();
panelInnerleft.setBackground(Color.black);
panelInnerright.setBackground(Color.red);
panelInnerleft.setPreferredSize(new Dimension(50,50));
panelInnerright.setPreferredSize(new Dimension(250,50));
panelInnerright.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
panelInner.add(panelInnerleft);
panelInner.add(panelInnerright);
Color [] color={Color.black,Color.yellow,Color.green,Color.red,Color.blue,Color.darkGray,Color.orange,Color.pink,Color.cyan,Color.lightGray,Color.black,Color.yellow,Color.green,Color.red,Color.blue,Color.darkGray,Color.orange,Color.pink,Color.cyan,Color.lightGray};
ButtonListener bl = new ButtonListener(this);
for(int i=0;i
三个方法分别是左中下面板,左边面板设置了按钮,在按钮上添加了图片,上面代码就是下面板设置了按钮颜色以及对其方式,要在中间面板画出想要的图形,就需要在中间面板上得到画笔,然后还需要鼠标监听器才能画出,这需要创建一个新的类,然后重写这个类,把需要的属性传递过去,以上就是画板基本界面了;
接下来就监听器的设置,还有重绘,不做概述了;