> Java > java지도 시간 > Java GridLayout에서 버튼의 X 및 Y 인덱스를 효율적으로 가져오는 방법은 무엇입니까?

Java GridLayout에서 버튼의 X 및 Y 인덱스를 효율적으로 가져오는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-17 01:23:24
원래의
708명이 탐색했습니다.

How to Efficiently Get the X and Y Indexes of a Button in a Java GridLayout?

GridLayout에서 버튼의 X 및 Y 인덱스를 쉽게 얻는 방법

Java에서 GridLayout을 작업할 때 x 및 Y 인덱스를 결정해야 할 수도 있습니다. 그리드 내 특정 버튼의 y 인덱스. 기존 방법에는 원하는 버튼을 찾기 위해 버튼의 2차원 배열을 반복하는 중첩 루프가 포함됩니다.

<br> @Override<br> public void actionPerformed(ActionEvent ae) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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);
    }
로그인 후 복사

}

이 방법은 지루하고 오류가 발생하기 쉽습니다. 다행히 버튼의 좌표를 검색하는 더 효율적인 방법이 있습니다.

GridButtonPanel 클래스 소개

다음 Java 코드는 단순화된 솔루션을 보여줍니다.


가져오기 java.awt.EventQueue;
가져오기 java.awt.GridLayout;
java.awt.event.ActionEvent 가져오기;
java.awt.event.ActionListener 가져오기;
java.util.ArrayList 가져오기;
java.util.List 가져오기;
javax.swing.JButton 가져오기;
가져오기 javax.swing.JFrame;
import javax.swing.JPanel;

/**

  • @see http://stackoverflow.com/questions/7702697
    */

공용 클래스 GridButtonPanel {

private static final int N = 5;
private final List<JButton> list = new ArrayList<JButton>();

private JButton getGridButton(int r, int c) {
    int index = r * N + c;
    return list.get(index);
}

private JButton createGridButton(final int row, final int col) {
    final JButton b = new JButton("r" + row + ",c" + col);
    b.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JButton gb = GridButtonPanel.this.getGridButton(row, col);
            System.out.println("r" + row + ",c" + col
                + " " + (b == gb)
                + " " + (b.equals(gb)));
        }
    });
    return b;
}

private JPanel createGridPanel() {
    JPanel p = new JPanel(new GridLayout(N, N));
    for (int i = 0; i < N * N; i++) {
        int row = i / N;
        int col = i % N;
        JButton gb = createGridButton(row, col);
        list.add(gb);
        p.add(gb);
    }
    return p;
}

private void display() {
    JFrame f = new JFrame("GridButton");
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(createGridPanel());
    f.pack();
    f.setLocationRelativeTo(null);
    f.setVisible(true);
}

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new GridButtonPanel().display();
        }
    });
}
로그인 후 복사

}

이 코드에서:

1. getGridButton() 메서드:

이 메서드를 사용하면 x 및 y 좌표를 기반으로 그리드에서 버튼을 검색할 수 있습니다. 목록의 인덱스를 결정하기 위해 행 수(N)에 지정된 행(r)을 곱하고 지정된 열(c)을 더합니다.

2. 액션 리스너:

버튼을 클릭하면 액션 리스너가 트리거되고 getGridButton() 메서드를 호출하여 클릭한 버튼을 검색합니다. 그런 다음 클릭한 버튼(b)의 참조를 검색된 버튼(gb)과 비교하여 둘 다 동일한 버튼을 나타내는지 확인합니다.

3. display() 메소드:

이 메소드는 그래픽 사용자 인터페이스(GUI)를 생성하고 표시합니다.

이 프로그램을 실행하면 GUI는 x가 포함된 버튼이 있는 그리드를 표시합니다. 그리고 y 좌표. 버튼을 클릭하면 콘솔은 해당 좌표를 인쇄하고 버튼의 ID를 확인합니다.

예:

"r2,c3 버튼을 클릭하면 ", 콘솔 출력은 다음과 같습니다.

r2,c3 true true
로그인 후 복사

이것은 검색된 버튼이 (gb)는 클릭한 버튼 (b)와 동일하며, 이는 성공적인 작업을 나타냅니다.

이 접근 방식을 사용하면 복잡한 중첩 루프 프로세스를 피하고 GridLayout에 있는 버튼의 x 및 y 인덱스에 효율적으로 액세스할 수 있습니다.

위 내용은 Java GridLayout에서 버튼의 X 및 Y 인덱스를 효율적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿