package com.drawmyline;import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class DrawMyLine extends Frame { /**
* @param args
*/
Image outImage = null;//定义内存中的 Image对象.
Graphics ig =null;
private int X1;
private int Y1;
private int X2;
private int Y2;
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawMyLine dyl = new DrawMyLine();
}
public DrawMyLine(){
this.setSize(1000, 1000);
this.setVisible(true); //设置可见性.
Dimension d =getSize();
Image i = createImage(d.width, d.height);
ig =i.getGraphics(); //内存中的 Image.
addWindowListener(new WindowAdapter() { //设置正常关闭.
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
});
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e){
X1 = e.getX();
Y1 = e.getY();
}
public void mouseReleased(MouseEvent e){ //鼠标按下时画线.
X2 = e.getX();
Y2 = e.getY();
Graphics g = getGraphics();
g.drawLine(X1, Y1, X2, Y2);
g.drawString(X1+","+Y1, X1, Y1);
g.drawString(X2+","+Y2, X2, Y2);
ig.drawLine(X1, Y1, X2, Y2);
ig.drawString(X1+","+Y1, X1, Y1);
ig.drawString(X2+","+Y2, X2, Y2);
}
});
}
public void paint(Graphics g){ //重写paint()方法.
if (outImage!=null) {
g.drawImage(outImage, 0, 0, this);
}
}}
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class DrawMyLine extends Frame { /**
* @param args
*/
Image outImage = null;//定义内存中的 Image对象.
Graphics ig =null;
private int X1;
private int Y1;
private int X2;
private int Y2;
public static void main(String[] args) {
// TODO Auto-generated method stub
DrawMyLine dyl = new DrawMyLine();
}
public DrawMyLine(){
this.setSize(1000, 1000);
this.setVisible(true); //设置可见性.
Dimension d =getSize();
Image i = createImage(d.width, d.height);
ig =i.getGraphics(); //内存中的 Image.
addWindowListener(new WindowAdapter() { //设置正常关闭.
public void windowClosing(WindowEvent e){
e.getWindow().dispose();
}
});
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e){
X1 = e.getX();
Y1 = e.getY();
}
public void mouseReleased(MouseEvent e){ //鼠标按下时画线.
X2 = e.getX();
Y2 = e.getY();
Graphics g = getGraphics();
g.drawLine(X1, Y1, X2, Y2);
g.drawString(X1+","+Y1, X1, Y1);
g.drawString(X2+","+Y2, X2, Y2);
ig.drawLine(X1, Y1, X2, Y2);
ig.drawString(X1+","+Y1, X1, Y1);
ig.drawString(X2+","+Y2, X2, Y2);
}
});
}
public void paint(Graphics g){ //重写paint()方法.
if (outImage!=null) {
g.drawImage(outImage, 0, 0, this);
}
}}
解决方案 »
- “父类名 变量=new 子类名对象”的问题,求指教!
- final修饰的问题,求精通Java的老师解释一下
- 在UNIX中调用Microsoft SQL Server 2000 Driver for JDBC报错,各位大牛帮忙看下
- 请教一个swing显示图片问题
- 再细一点的执行顺序问题!求解,谢谢
- 请教 sqlserver 中 not in 在我的代码中为什么失去了作用?
- 现在的java application支持音频播放不
- 怎么让eclipse刚开始运行的时候,出来选择选择那个位置为项目的位置。
- 新人求助 如何应用java初级知识编写一个类QQ软件
- 怎样使JavaMail中的内容换行?
- 1099端口正常 visualvm连接不上
- 各位前辈麻烦你们班我看看这是为什么?
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;public class DrawMyLine extends JPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() { @Override
public void run() {
JFrame f = new JFrame("Draw My Line");
f.setContentPane(new DrawMyLine());
f.setSize(1000, 1000);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
} private Point from;
private List<Segment> segments;
public DrawMyLine() {
from = new Point(0, 0);
segments = new ArrayList<Segment>(25);
addMouseListener(new MouseAdapter() { @Override
public void mousePressed(MouseEvent e) {
from.x = e.getX();
from.y = e.getY();
} @Override
public void mouseReleased(MouseEvent e) {
segments.add(new Segment(from, e.getPoint()));
repaint();
}
});
} @Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
for(Segment s : segments)
s.draw(g);
}
private static class Segment {
private final int x1, x2, y1, y2;
private Segment(Point from, Point to) {
x1 = from.x;
y1 = from.y;
x2 = to.x;
y2 = to.y;
}
private void draw(Graphics g) {
g.drawLine(x1, y1, x2, y2);
}
}
}
…………这就是我为什么直接给你贴了正确的代码。