Java 如何获取GridLayout中元素的X和Y索引?
我正在研究Java教程,发现在GridLayout中查找JButton的x / y索引的方法是遍历与布局关联的按钮b的二维数组,并检查是否
b[i][j] == buttonReference。
@Override public void actionPerformed(ActionEvent ae) {
JButton bx = (JButton) ae.getSource();
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
if (b[i][j] == bx)
{
bx.setBackground(Color.RED);
}
}
有没有更简单的方法来获取按钮的X / Y索引?
就像是:
JButton button = (JButton) ev.getSource();int x = this.getContentPane().getComponentXIndex(button);
int y = this.getContentPane().getComponentYIndex(button);
this是GameWindow实例,并且ev在用户按下按钮时触发了ActionEvent。
在这种情况下,它应该得到:x == 2,y == 1
@ GameWindow.java:
package javaswingapplication;import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class GameWindow extends JFrame implements ActionListener
{
JButton b[][] = new JButton[5][5];
int v1[] = { 2, 5, 3, 7, 10 };
int v2[] = { 3, 5, 6, 9, 12 };
public GameWindow(String title)
{
super(title);
setLayout(new GridLayout(5, 5));
setDefaultCloseOperation(EXIT_ON_CLOSE );
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
{
b[i][j] = new JButton();
b[i][j].addActionListener(this);
add(b[i][j]);
}
}
@Override
public void actionPerformed(ActionEvent ae) {
((JButton)ae.getSource()).setBackground(Color.red);
}
}
@ JavaSwingApplication.java:
package javaswingapplication;public class JavaSwingApplication {
public static void main(String[] args) {
GameWindow g = new GameWindow("Game");
g.setVisible(true);
g.setSize(500, 500);
}
}
回答:
你已经保存了所有JButton的数组;你可以搜索,ae.getSource()
并且拥有职位。
for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) {
if( b[i][j] == ae.getSource() ) {
// position i,j
}
}
}
以上是 Java 如何获取GridLayout中元素的X和Y索引? 的全部内容, 来源链接: utcz.com/qa/419100.html