java画板项目总结

具体如下:

 

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<Shape> al = new ArrayList<Shape>();
	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);
<span style="white-space:pre">		</span>}
	}


如上具体思路就是首先主函数入口,为了不让主函数显得复杂化,创建了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<command.length;i++){
			JRadioButton jrb = new JRadioButton();
			if(i==0){
				jrb.setSelected(true);
			}
			jrb.setIcon(new ImageIcon("images/draw"+i+".jpg"));
			jrb.setRolloverIcon(new ImageIcon("images/draw"+i+"-1.jpg"));
			jrb.setPressedIcon(new ImageIcon("images/draw"+i+"-2.jpg"));
			jrb.setSelectedIcon(new ImageIcon("images/draw"+i+"-3.jpg"));
			jrb.setActionCommand(command[i]);
			panelleft.add(jrb);
			bg.add(jrb);
		}
	}
	public JPanel Panelmiddle(){
		JPanel panelmiddle = new JPanel();
		panelmiddle.setBackground(Color.white);
		this.add(panelmiddle);
		return panelmiddle;
	}

 

 

 

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<color.length;i++){
			JButton jb = new JButton();
			jb.setPreferredSize(new Dimension(25,25));
			jb.setBackground(color[i]);
			panelInnerright.add(jb);
			jb.addActionListener(bl);
		}
		panelInnerleft.setLayout(null);
		JButton jb1 = new JButton();
		JButton jb2 = new JButton();
		jb1.setBounds(9,9,25,25);
		jb2.setBounds(19,19,25,25);
		
		jb1.setEnabled(false);
		jb2.setEnabled(false);
		
		jb1.setBorder(new BevelBorder(0,Color.red,Color.gray));
		jb2.setBorder(new BevelBorder(0,Color.white,Color.gray));
		panelInnerleft.add(jb1);
		panelInnerleft.add(jb2);
	}

 

三个方法分别是左中下面板,左边面板设置了按钮,在按钮上添加了图片,上面代码就是下面板设置了按钮颜色以及对其方式,要在中间面板画出想要的图形,就需要在中间面板上得到画笔,然后还需要鼠标监听器才能画出,这需要创建一个新的类,然后重写这个类,把需要的属性传递过去,以上就是画板基本界面了;

 

 

接下来就监听器的设置,还有重绘,不做概述了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值