Java 图形点击界面

Java 图形点击界面,java,graph,plot,mouseevent,mouselistener,Java,Graph,Plot,Mouseevent,Mouselistener,所以,我有一个绘制相位轨迹的程序。目前,起始点都是随机的,但我想添加的是程序从我单击的点开始轨迹的方法。我已经摆弄它好几个小时了,尝试了我所知道的一切,代码如下: public static void click(final double r, final double t) { MouseListener mus = new MouseAdapter() { public void mouseClicked(MouseEvent e) { dou

所以,我有一个绘制相位轨迹的程序。目前,起始点都是随机的,但我想添加的是程序从我单击的点开始轨迹的方法。我已经摆弄它好几个小时了,尝试了我所知道的一切,代码如下:

public static void click(final double r, final double t) {
    MouseListener mus = new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            double r = e.getX();
            double t = e.getY();
        }
    };
}

public Vector<Graph> getGraphs() {
    // ... bunch of code that draws the graph...
    g.add(new Graph.Line());
    g.lastElement().add(r, t);
    g.lastElement().setColor(Color.blue);
公共静态无效点击(最终双r,最终双t){
MouseListener mus=新的MouseAdapter(){
公共无效mouseClicked(MouseEvent e){
双r=e.getX();
双t=e.getY();
}
};
}
公共向量getGraphs(){
//…一堆绘制图形的代码。。。
g、 添加(新的Graph.Line());
g、 lastElement()。添加(r,t);
g、 lastElement().setColor(Color.blue);
它告诉我的是,r和t是找不到的。我意识到如果没有完整的代码,可能很难提供帮助,但这是大量的代码,如果你真的愿意帮助的话,我可以通过电子邮件发送给某人。但是在任何其他情况下,有人知道我能做什么吗?

1)
r
t
不在你的
getGraphs()范围内
方法

2) 您似乎没有在任何地方将鼠标适配器注册为
MouseListener

3) 不清楚如何调用
click()
方法


您需要从窗口组件捕获鼠标单击,假设您正在使用的是JPanel

然后,您的代码将如下所示:

public class MyApplication {
    private JFrame myWindow = new JFrame("My Application");
    private JPanel myPanelYouCanClick = new JPanel();

    public MyApplication() {
        myWindow.setContantPane(myPanelYouCanClick);
        myPanelYouCanClick.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                double r = e.getX();
                double t = e.getY();
                // Code to create your new trajectory called from here, pass
                // in the values of r and t if required. Remember you are
                // running on the event dispatcher thread!
            }
        });
        myWindow.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MyApplication app = new MyApplication();
            }
        });
    }
}