当前位置: 首页 > 面试题库 >

Java 如何获取GridLayout中元素的X和Y索引?

仲柏
2023-03-14
问题内容

我正在研究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
    }
  }
}


 类似资料:
  • 问题内容: 我知道方法rdd.firstwfirst(),它为我提供了RDD中的第一个元素。 还有rdd.take(num)方法,它给了我第一个“ num”元素。 但是,是否有可能通过索引获取元素? 谢谢 问题答案: 首先应为RDD建立索引,这应该是可能的。转换提供了稳定的索引,以其原始顺序对每个元素进行编号。 鉴于: 要按索引查找元素,此形式无用。首先,我们需要使用索引作为键: 现在,可以使用P

  • 问题内容: 有什么方法可以检查PNG图像的选定点(x,y)是否透明? 问题答案: 基于Jeff的答案,您的第一步将是创建PNG的画布表示。以下内容将创建一个屏幕外画布,该画布的宽度和高度与您的图像相同,并在其上绘制图像。 之后,当用户单击时,使用和获取位置。然后可以用来获取像素: 因为您只抓取一个像素,所以pixelData是一个包含四个像素的R,G,B和A值的四项数组。对于Alpha,任何小于2

  • 我想得到一个数组的前X个元素,这些元素至少可以总结为一个给定的总和,而无需事先在线性时间内对整个数组进行排序。我认为不可能在所有情况下都获得线性时间,但至少在我的输入数组中,我有大约1%的元素占总和的99%。我需要正确地识别这些。我不知道它是否有帮助,但所有元素的总和总是1。 我已经用一个排序数组实现了它,但这吹响了我的算法的复杂性。之后,我已经研究了top-k算法和背包算法,但它们不允许灵活的x

  • 问题内容: 我发现自己经常这样编写代码: 相反,我可以做 但这似乎不是“ pythonic”。(您知道…建立索引。该死!)是否有某种语法可以让我使用循环,列表理解或生成器同时提取索引(k)和元素(i)?我认为,任务是在科学计算中进行的,因此循环体中有很多东西,列表理解本身可能不够强大。 我也欢迎有关概念的技巧,尽管我可能没有。谢谢。 问题答案: 您可以使用: 有关循环技术的更多信息。 编辑: 如注

  • 我有一个textview onTick,它需要每隔1秒更改它在屏幕上的位置。我有一种方法可以给我一个介于0和屏幕最大高度/宽度之间的随机值。问题是im硬编码值,这在其他屏幕更小或更大的设备上不起作用。有什么建议可以让我的视图在不离开屏幕的情况下,无论屏幕大小如何,仍然会改变其位置?我也尝试过其他方法/功能,但它们不起作用或/被弃用。以下是函数/方法的代码:

  • 我正在尝试创建一个用户可以在浏览器中存储注释的应用程序。 为了弄清楚用户在文档中创建注释的位置,我正在尝试存储所选文本的xpath和偏移量。 我到处搜索过,似乎有很多从xPath字符串中检索元素的示例,但没有很好的从DOM元素中查找xPath的示例。 以下是我尝试过的: 其中getXPathForElement如下所示: 这段代码给出了一个很长的看起来很奇怪的文本,如下所示:(我认为这不是一个真正