我的目的是要鼠标每次点击都会与一个固定点画一条线段。比如固定点为(100,100),每次都在一个窗口点一下鼠标,就画出点的这个点与(100,100)之间的线段。可是点击后坐标是得到了,可是没有线段,不知道什么原因,望高手解答。
代码如下:public class Test extends JFrame{
JButton button=new JButton("DrawLine");
MyPanel panel=new MyPanel();
MyMouse mouse1=new MyMouse();
public Test(){
panel.add(button);
this.setSize(500,500);
this.setVisible(true);
this.addMouseListener(mouse1);
}
public static void main(String[] args) {
new Test();
} Point point=new Point();
public class MyPanel extends JPanel{
public void paint(Graphics g){
super.paint(g);
g.drawLine(Double.valueOf(point.getX()).intValue(),
Double.valueOf(point.getY()).intValue(),100,100);
}
}
public class MyMouse implements MouseListener{
public void mouseClicked(MouseEvent e){
int x1=e.getX();
int y1=e.getY();
point.setX(x1);
point.setY(y1);
panel.repaint();
}
}
}
代码如下:public class Test extends JFrame{
JButton button=new JButton("DrawLine");
MyPanel panel=new MyPanel();
MyMouse mouse1=new MyMouse();
public Test(){
panel.add(button);
this.setSize(500,500);
this.setVisible(true);
this.addMouseListener(mouse1);
}
public static void main(String[] args) {
new Test();
} Point point=new Point();
public class MyPanel extends JPanel{
public void paint(Graphics g){
super.paint(g);
g.drawLine(Double.valueOf(point.getX()).intValue(),
Double.valueOf(point.getY()).intValue(),100,100);
}
}
public class MyMouse implements MouseListener{
public void mouseClicked(MouseEvent e){
int x1=e.getX();
int y1=e.getY();
point.setX(x1);
point.setY(y1);
panel.repaint();
}
}
}
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Test extends JFrame
{
JButton button = new JButton("DrawLine"); MyPanel panel = new MyPanel(); MyMouse mouse1 = new MyMouse(); public Test()
{
panel.add(button);
this.setSize(500, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("DrawLine");
this.add(panel);
this.addMouseListener(mouse1);
} public static void main(String[] args)
{
new Test();
} Point point = new Point(); public class MyPanel extends JPanel
{
public void paint(Graphics g)
{
super.paint(g);
g.drawLine(Double.valueOf(point.getX()).intValue(), Double.valueOf(
point.getY()).intValue(), 100, 100);
}
} public class MyMouse implements MouseListener
{
public void mouseClicked(MouseEvent e)
{
int x1 = e.getX();
int y1 = e.getY();
point.setLocation(x1,y1);
panel.repaint();
} @Override
public void mouseEntered(MouseEvent e)
{
// TODO Auto-generated method stub
} @Override
public void mouseExited(MouseEvent e)
{
// TODO Auto-generated method stub
} @Override
public void mousePressed(MouseEvent e)
{
// TODO Auto-generated method stub
} @Override
public void mouseReleased(MouseEvent e)
{
// TODO Auto-generated method stub
}
}
}
你原来写的实在错的太多了,自己比较下吧
import javax.swing.JFrame;/*
* Created on 2008/03/11
*/public class testFrame1 {
public static void main(String[] args) { JFrame frame = new testFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}}import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;/*
* Created on 2008/03/11
*/public class testFrame extends JFrame{
private int DEFAULT_WIDTH = 500;
private int DEFAULT_HEIGHT = 500;
private JButton button;
private MyPanel panel;
private MyMouse mouse1;
private Point point;
public testFrame()
{
setTitle("線段");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
button = new JButton("DrawLine");
panel = new MyPanel();
point = new Point();
mouse1 = new MyMouse();
add(panel,BorderLayout.CENTER);
panel.add(button);
button.addMouseListener(mouse1);
}
public class MyPanel extends JPanel { public void paint(Graphics g) { super.paint(g);
g.drawLine(Double.valueOf(point.getX()).intValue(), Double.valueOf(point.getY())
.intValue(), 100, 100);
}
}
public class MyMouse implements MouseListener{ public void mouseClicked(MouseEvent e) { int x1 = e.getX();
int y1 = e.getY();
point.setLocation(x1, y1);
panel.repaint();
} public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }
}
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ArrayList;
import javax.swing.*;public class Test { public static void main(String[] args) {
TestFrame frame = new TestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}}class TestFrame extends JFrame {
public TestFrame() {
setTitle("Test");
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;
setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 4);
TestPanel panel = new TestPanel();
add(panel);
}
}class TestPanel extends JPanel {
public TestPanel() {
squares = new ArrayList<Line2D>();
current = null;
addMouseListener(new MouseHandler());
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
for (Line2D l : squares)
g2.draw(l);
}
public void add(Point2D p) {
double x =p.getX();
double y = p.getY();
current = new Line2D.Double(DEFAULT_X, DEFAULT_Y, x, y);
squares.add(current);
}
private class MouseHandler extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent event) {
add(event.getPoint());
repaint();
}
}
private Line2D current;
private ArrayList<Line2D> squares;
private static final int DEFAULT_X = 100;
private static final int DEFAULT_Y = 100;
}
最上面加上这行。
public Test()
{
this.setSize(500, 500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("DrawLine");
add(panel,BorderLayout.CENTER);
panel.add(button);
this.addMouseListener(mouse1);
}
test 方法改成这样