Java drawLine不使用变量

时间:2016-06-12 20:41:44

标签: java swing mouselistener

我正在尝试创建一个程序,用户可以通过单击该行的起点,将鼠标拖动到终点并释放它来在GUI中绘制一条线。我不希望在拖动时在屏幕上显示该行,所以我使用的是MouseListener。

我创建了一个名为LineInner的独立类,它处理所有MouseListener函数并确定它按预期运行。

这是我的问题所在的类:

import javax.swing.*;
import java.awt.*;
public class NotMSPaint {
    public static void main(String[] args) {

        JFrame window = new JFrame();
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 300, 300);
        window.setVisible(true);
        LineInner in =new LineInner();
        window.addMouseListener(in);

        while ( in .x1 == -1 || in.y1 == -1 || in.x2 == -1 || in.y2 == -1) {
            //pauses program until the user clicks the window
        }

        int x1 = in.x1; //variable declarations
        int y1 = in.y1;
        int x2 = in.x2;
        int y2 = in.y2;
        System.out.println(x1 + " " + y1 + " " + x2 + " " + y2);

        window.getContentPane().add(new JComponent() //problem spot
        {
            public void paint(Graphics g) {
                System.out.println("paint");
                g.drawLine(x1, y1, x2, y2);

            }
        });
    }
}

如果我在标记为变量声明的部分I中将x1,y1,x2和y2设置为0或100之类的数字,则会按照预期在这些坐标处绘制线条。

当我从MouseListener(in.x1,in.y1等)中获取变量时,println语句显示坐标按预期分配给变量。当程序如上所示运行时,永远不会输入绘制方法,也不会绘制直线。

  

为什么在为变量赋值时运行,但在MouseListener为同一变量赋值时不运行?

0 个答案:

没有答案