如何解决多次从方法返回值
我正在尝试获取它来记录鼠标按下的坐标,将其转换为网格参考并返回该参考。问题是我单击一次,它在数组中返回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 举报,一经查实,本站将立刻删除。