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;
/**
공용 클래스 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!