请问java怎样在界面上画一个线条,然后又可以编辑它,也就是画完了之后可以选中,两头出现矩形,可以拖动,可以拉长,缩短,就像在word里画直线一样
我知道用graphics2d.drawLine,可是用这个不能编辑,
请高手指点
我知道用graphics2d.drawLine,可是用这个不能编辑,
请高手指点
解决方案 »
- 如何提高程序效率?越来越慢
- 关于String类
- 怎么让JTable中用户选中的任意一行信息不能编辑啊??
- C/S结构的断点续传多线程传输文件
- 如何将字符串"\\w"转换成"\\\\w"
- 请教:linux下运行JAR文件
- 一个新的编程网站,认为好的给分!
- java访问sqlserver出错:高手快来帮忙啊!!!
- 我用<OBJECT>替换了<APPLET>标签,但是<object....<param name="code" value="*****.class">...其中name,value到底填什么?我间了好几个人都说的不完全正确!请高手指点一下。
- 讨论下多线程下使用哪种集合类
- 关于border,喜欢漂亮界面的进来讨论~~
- 关于swing性能的问题
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MoveLine extends JFrame{
public MoveLine(){
MyLinePane p = new MyLinePane(10,10,100,100);
p.setSize(400,400);
setContentPane(p);
setSize(500,500);
} public static void main(String[] args) {
MoveLine ml = new MoveLine();
ml.setVisible(true);
ml.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyLinePane extends JPanel implements MouseListener,MouseMotionListener{
int x1,x2,y1,y2;//当前值
int oldx1,oldy1,oldx2,oldy2;//原始值
boolean selected=false;
boolean move=false;
public MyLinePane(int x1,int y1,int x2,int y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
this.oldx1=x1;
this.oldx2=x2;
this.oldy1=y1;
this.oldy2=y2;
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(x1,y1,x2,y2);
if(selected){
g.fillRect(x1,y1,x1+1,y1+1);
g.fillRect(x2,y2,x2+1,y2+1);
}
//此处根据状态,selected,move 编写方法
//每次擦掉原来的线和点,绘制新的线和点
}
//以下几个方法中判断当前的操作,并纪录坐标
public void mouseDragged(MouseEvent e){
}
public void mouseMoved(MouseEvent e){
}public void mouseClicked(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON1){
selected=true;
}
this.updateUI();
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}}