Jpanel 画图多出了个按钮

dxiao_xiang 2012-08-07 11:16:06


public class Point {
private int x;
private int y;
public Point(){}
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JPanel;

public class DrawLine extends JPanel{
Point start;
Point end;
Point temp;
int which;
Point linestart;
Point lineend;


public DrawLine(){
this.setBackground(Color.WHITE);
this.start=new Point(0,0);
this.end =new Point(0,0);
this.linestart=new Point(0,0);
this.lineend =new Point(0,0);
this.temp=new Point(0,0);
which=0;
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
start.setX(e.getX());
start.setY(e.getY());
end.setX(e.getX());
end.setY(e.getY());
linestart.setX(e.getX());
linestart.setY(e.getY());
lineend.setX(e.getX());
lineend.setY(e.getY());
}

@Override
public void mouseDragged(MouseEvent de) {
linestart.setP(lineend);
temp.setP(end);
end.setX(de.getX());
end.setY(de.getY());
lineend.setX(de.getX());
lineend.setY(de.getY());
repaint();
}
});
}
public void paint(Graphics g){

if(which==3){
g.setColor(Color.WHITE);
g.fillArc(end.getX(), end.getY(), 50, 50, 0, 360);
}
if(which==4){
g.setColor(Color.WHITE);
super.paint(g);
which=0;
}
if(which==0){
g.setColor(Color.RED);
g.drawLine(linestart.getX(), linestart.getY(), lineend.getX(), lineend.getY());
}
if(which==1){
g.setColor(Color.WHITE);
g.drawLine(start.getX(), start.getY(), temp.getX(), temp.getY());
g.setColor(Color.RED);
g.drawLine(start.getX(), start.getY(), end.getX(), end.getY());
}
if(which==2){
g.setColor(Color.WHITE);
g.drawArc(start.getX(), start.getY(), temp.getX()-start.getX(), temp.getY()-start.getY(), 0, 360);
g.setColor(Color.blue);
g.drawArc(start.getX(), start.getY(), end.getX()-start.getX(), end.getY()-start.getY(), 0, 360);
}
}
}

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class DrawFrame {
private DrawLine line;
private JFrame frame;
private JPanel buttons;
private JButton change;
private JButton clean;
private JLabel label;

public DrawFrame() {
line = new DrawLine();
line.setFocusable(true);
frame = new JFrame();
buttons = new JPanel();
label = new JLabel("dxx");
change = new JButton("CHANGE");
clean = new JButton("CLEAR");
change.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
line.which++;
line.setFocusable(true);
if(line.which==4)line.which=0;
}
});
clean.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
line.which=4;
line.setFocusable(true);
line.repaint();
}
});
buttons.add(change);
buttons.add(clean);
frame.setLayout(new BorderLayout());
buttons.setBackground(Color.green);
// frame.add(label,BorderLayout.SOUTH);
frame.add(line, BorderLayout.CENTER);
frame.add(buttons, BorderLayout.SOUTH);
}

public void show() {
frame.setSize(600, 400);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

public class DrawStart {
public static void main(String[] args) {
DrawFrame pic=new DrawFrame();
pic.show();
}
}
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ace62 2012-08-08
  • 打赏
  • 举报
回复
试了试,程序应该没问题,就是Point类的代码不全
另外,可以将DrawFrame的show方法改个名字
dxiao_xiang 2012-08-08
  • 打赏
  • 举报
回复


点击按钮画是 就出现左上角的按钮图案,怎么回事呀????
dxiao_xiang 2012-08-08
  • 打赏
  • 举报
回复
http://my.csdn.net/my/album/detail/1243561#1243561
就像这样。
ranbor2 2012-08-08
  • 打赏
  • 举报
回复
看不懂啊
dxiao_xiang 2012-08-08
  • 打赏
  • 举报
回复
但是为什么画图时总是咋面板左上角多出按钮图案呢??????

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧