您的位置:首页 > 其它

画笔程序说明

2012-07-05 04:12 127 查看
//In the last version I have finish the function to write a line ...
//This version 0.2 will add more fun things...

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class DrawPad extends Frame {
IDrawPad idp;
JButton b1;
JButton b2;
JPanel jpl;

public void init() {
idp=new IDrawPad(this);
jpl=new JPanel(new GridLayout(1,2,10,10));
b1=new JButton("Black");
b2=new JButton("Other");
//add(idp);
add(idp,BorderLayout.CENTER);
add(jpl,BorderLayout.NORTH);
jpl.add(b1);
jpl.add(b2);
b1.addActionListener(idp);
idp.init();
idp.setBackground(Color.magenta);
this.setBackground(Color.white);
this.setVisible(true);
addWindowListener(new WindowAdapter(){

@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}

});
}

public static void main(String args[]) {
new DrawPad().init();
}
}

class IDrawPad extends JPanel implements ActionListener{
DrawPad dp;
IDrawPad(DrawPad dp) {
this.dp=dp;

}
Color c=new Color(0, 150, 150);
Point Frond=new Point(0,0);
Point Back=new Point(0,0);
Image tem;
int i=1;
boolean s_s;
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e) {
if(i%4==3) {
dp.b1.setLabel("CYAN");
c=Color.cyan;
dp.b1.setBackground(c);
i++;
//System.out.println(i);
}

else if(i%4==2){
dp.b1.setLabel("Black");
c=Color.black;
dp.b1.setBackground(c);

i++;
//System.out.println(i);
}
else if(i%4==1) {
dp.b1.setLabel("RED");
c=Color.red;
dp.b1.setBackground(c);

i++;
//System.out.println(i);
}
else if(i%4==0) {
dp.b1.setLabel("BLUE");
c=Color.blue;
dp.b1.setBackground(c);

i++;
//System.out.println(i);
}
}
public void init() {

setBounds(100,100,700,550);
setBackground(Color.orange);
setVisible(true);
this.addMouseMotionListener(new MouseE());
this.addMouseListener(new MouseE());

}

public void update(Graphics g) {
if(tem==null) {
tem=this.createImage(700, 550);
}
Graphics tg=tem.getGraphics();
paint(tg);
g.drawImage(tem, 0, 0, null);
}

public void paint(Graphics g) {
g.setColor(c);
g.drawLine(Back.x, Back.y, Frond.x, Frond.y);
Back=Frond;
}

}

class MouseE extends MouseMotionAdapter implements MouseListener {
IDrawPad y;
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent e) {
y=(IDrawPad)e.getSource();
//System.out.println(y.Back);
y.Back=e.getPoint();
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
public void mouseDragged(MouseEvent e) {
y=(IDrawPad)e.getSource();
y.Frond=e.getPoint();
y.repaint();
}

}

1.在最初,我直接在DrawPad上面作画,然后不断的update()这个画面....这样这个画面其实都是一个画板.但是实际中,我们只需要在一个画板区域作画...其他地方放置一个按键等功能...

2.所以我们需要在主窗口中添加一个可以画画的组件.也就是拥有paint()方法的一个组件...我们发现JPanel中有这个方法....所以我们新建一个IDrawPad从JPanel中继承...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: