微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多次从方法返回值

如何解决多次从方法返回值

我正在尝试获取它来记录鼠标按下的坐标,将其转换为网格参考并返回该参考。问题是我单击一次,它在数组中返回1表示已被填充。当我再次单击时,它没有返回参考。我知道它正在计算出现在控制台上的gridX和gridY。

如何获取每次点击返回的参考?我需要使用某种while循环吗?

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SwingPaintDemo3 {

    public static void main(String[] args) {
        SwingUtilities.invokelater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    static void createAndShowGUI() {
        int[][][] lifeGrid = new int[62][42][2];
        int[] coords = new int[2];
        System.out.println("Created GUI on EDT? " +
                SwingUtilities.isEventdispatchThread());
        JFrame f = new JFrame("Swing Paint Demo");
        f.setPreferredSize(new Dimension(1280,800));
        f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        JPanel subPanel = new JPanel();
        coords = MyPanel.changeValues(coords);
        int x = coords[0];
        int y = coords[1];
        lifeGrid[x][y][0] = 1;
        System.out.println(lifeGrid[x][y][0]);
        f.add(new MyPanel());
        JButton seed = new JButton("SEED");
        subPanel.add(seed);
        seed.setPreferredSize(new Dimension(70,50));
        seed.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.out.println("Seed");
            }
        });
        JButton start = new JButton("START");
        subPanel.add(start);
        start.setPreferredSize(new Dimension(70,50));
        start.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae1) {
                System.out.println("Start");


            }
        });
        start.setPreferredSize(new Dimension(70,50));
        JButton stop = new JButton("STOP");
        subPanel.add(stop);
        stop.setPreferredSize(new Dimension(70,50));
        JButton reset = new JButton("RESET");
        subPanel.add(reset);
        reset.setPreferredSize(new Dimension(70,50));
        f.add(subPanel,BorderLayout.EAST);

        f.setVisible(true);
    }
}

MyPanel类:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MyPanel extends JPanel {

    static int gridX = 0;
    static int gridY = 0;
    int squareX = 1280;
    int squareY = 800;

    public MyPanel() {
        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                squareX = e.getX();
                squareY = e.getY();
                if ((squareX > 20 & squareX < 920) & (squareY > 50 & squareY < 650)) {
                    gridX = (squareX - 20) / 15 + 1;
                    gridY = (squareY - 50) / 15 + 1;
                    squareX = (squareX - 20) / 15 * 15 + 20;
                    squareY = (squareY - 50) / 15 * 15 + 50;
                    System.out.println(gridX + " " + gridY);
                    repaint(squareX,squareY,15,15);
                } else {

                }
            }
        });

    }

    static int[] changeValues(int[] grid) {
        grid[0] = gridX;
        grid[1] = gridY;
        return grid;
    }

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.fillRect(squareX,13,13);
        g.setColor(Color.BLACK);
        g.drawRect(squareX,13);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。