gpt4 book ai didi

Java 不断给我坐标乘以 93

转载 作者:行者123 更新时间:2023-12-02 07:01:54 25 4
gpt4 key购买 nike

当我为 JButton 数组设置 X 和 Y 值时,我得到的正确值仅乘以 93。我可以通过将该值除以 93 来解决问题,但我宁愿首先找出错误所在。

我在代码中有两个类,一个用于实际程序,一个用于按钮对象和坐标。

代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridLayout;
import java.io.*;
public class ConnectFour implements ActionListener
{
JFrame frame = new JFrame();
Button [][] buttons = new Button[6][7];
public ConnectFour()
{
frame.setSize(700,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(6,7));
frame.setLocationRelativeTo(null);
frame.setTitle("Connect Four");
for(int filler = 0; filler <= 5; filler++)
{
for(int filler2 = 0; filler2 <= 6; filler2++)
{
buttons[filler][filler2] = new Button();
buttons[filler][filler2].setX(filler2);
buttons[filler][filler2].setY(filler);
//System.out.println(buttons[filler][filler2].getX());
//System.out.print(buttons[filler][filler2].getY());
frame.add(buttons[filler][filler2].button);
buttons[filler][filler2].button.addActionListener(this);
}
}
frame.setVisible(true);
}
public void actionPerformed(ActionEvent a)
{
JButton pressedButton = (JButton)a.getSource();
System.out.print(pressedButton.getY() / 93);
System.out.print(pressedButton.getX() / 93);
}
public static void main(String args[])
{
ConnectFour gameplay = new ConnectFour();
}
}

这是 Button 类:

import javax.swing.JButton;
public class Button
{
JButton button;
private int x = 0;
private int y = 0;
public Button()
{
button = new JButton();
}
public int getX() {return x;}
public int getY() {return y;}
public void setX(int xIndex)
{
x = xIndex;
}
public void setY(int yIndex)
{
y = yIndex;
}
}

最佳答案

您正在混合两个 Button 类。

在这一行中,您将向 Button.button 添加一个 actionListener:

buttons[filler][filler2].button.addActionListener(this);

因为JButton也有方法getXgetY,所以你可以调用它们。当你这样做时:

pressedButton.getX()

您获得的是 JButtonx 位置,而不是 Button 的位置。

我认为解决此问题的最简单方法是让您的按钮扩展 JButton 并将 xy 重命名为 ,例如:

public class Button extends JButton {
private int row = 0;
private int column = 0;

public Button(int row, int column) {
super();

this.row = row;
this.column = column;
}
public int getRow() {return row;}
public int getColumn() {return column;}
}

您可以将按钮创建为

for(int filler = 0; filler <= 5; filler++) {   
for(int filler2 = 0; filler2 <= 6; filler2++) {
buttons[filler][filler2] = new Button(filler2, filler);
frame.add(buttons[filler][filler2]);
buttons[filler][filler2].addActionListener(this);
}
}

并在 ActionListener 中使用它们作为

public void actionPerformed(ActionEvent a) {
Button pressedButton = (Button)a.getSource();
System.out.print(pressedButton.getColumn());
System.out.print(pressedButton.getRow());
}

关于Java 不断给我坐标乘以 93,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16543669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com