2016-10-25 13 views
0

JPanel을 만들고 패널에 체크 상자를 추가했습니다.Java에서 Checkboxes의 2 차원 배열을 만들고 그리드 레이아웃을 사용하여 2 개의 열로 정렬해야합니다. 아무도 이것으로 나를 도울 수 있습니까?

import java.awt.*; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import javax.swing.JCheckBox; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

이이은 1 차원 배열, 그리고 왼쪽 롭 체크 박스의 단일 열을 보여주고, 지금까지 나의 일까지입니다. 다른 열을 기존 열과 나란히 추가하는 방법은 무엇입니까?

public class UserInterface extends JFrame 
{ 

    private JPanel club; 
    private JCheckBox[] check = new JCheckBox[10]; 

    public UserInterface() 
    { 
     super("SPORTS CLUB"); 
     club=new JPanel(); 

     add(club); 

     club.setLayout(new GridLayout(10,2)); 

     check[0] = new JCheckBox("101"); 
     check[1] = new JCheckBox(); 
     check[2] = new JCheckBox(); 
     check[3] = new JCheckBox(); 
     check[4] = new JCheckBox(); 
     check[5] = new JCheckBox(); 
     check[6] = new JCheckBox(); 
     check[7] = new JCheckBox(); 
    check[8] = new JCheckBox(); 

     check[9] = new JCheckBox(); 

     club.setAlignmentY(JComponent.LEFT_ALIGNMENT); 

     for (int i = 0; i < 10; i++) 
     { 
      club.add(check[i]); 
     } 
    } 


} 

이것은 main 클래스의 main() 함수입니다.

import javax.swing.JFrame; 

public class Main { 

    public static void main(String[] args) 
    { 
     UserInterface data=new UserInterface(); 
     data.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     data.setSize(300,200); 
     data.setVisible(true); 
    } 

} 

아무런 도움이되지 않으므로 참고 자료도 환영합니다.

+0

힌트 : 배열 슬롯을 클럽에 추가 **하는 루프가 이미 있습니다. 왜 지구상에서 다른 루프 (또는 같은 루프)를 사용하여 확인란을 크레이트하지 않습니까? – GhostCat

답변

2

이 어떻게 다른 열을

변경

// 10 rows, 2 columns 
club.setLayout(new GridLayout(10,2)); 

에 추가 할 수 있습니다 :이 작업을 수행 할 때마다 홀수 체크 박스 왼쪽에가는 것을

// variable number of rows, 2 columns 
club.setLayout(new GridLayout(0, 2)); 

주와 심지어 오른쪽에서 특정 열의 특정 확인란을 원하면 추가 순서가 필요합니다. 문제.

+0

그리고 더 많은 체크 박스를 만듭니다 ... –

+0

@TimothyTruckle : '0' 매개 변수를 사용하면 체크 상자의 수를 걱정할 필요가 없습니다 - 더 바보가 될 것입니다 –

0

그렇다면 질문을 올바르게 해석하면 2 열의 확인란이 필요하겠습니까? 우선이 모든 작업을 위해 배열을 사용하지 마십시오. 동적이지 않으므로 코드가 좀 못 생깁니다. 어쨌든 필요하지 않습니다.

먼저 당신이 레이아웃 매니저 그리드와 인 JPanel을 만들려면 :

JPanel grid = new JPanel(new GridLayout(0,2)); 

지금 체크 박스와 패널을 작성하고 키우면 액션 명령을 소유 각 확인란을 제공합니다. 이 방법을 사용하면 Listeners 방식을 더 잘 사용할 수 있습니다.

for(int i = 0; i < 10; i++){ 
JCheckbox c = new JCheckbox(); 
c.setActionCommand(i); 
grid.add(c); 
} 

이 방법은 어레이를 사용하는 것보다 훨씬 세련된 솔루션입니다. 희망이 있으리라.

+0

도움을 주셔서 감사합니다. @Alexander – Tej