2014-11-13 5 views
-1

나는 누락 된 단순한 것이 있다고 확신합니다. 그러나 나는 이런 식으로 보이는 간단한 데이터 입력 UI를 만들기 위해 노력하고 있습니다.GridBagLayout not ... behaving

screenshot

큰 문제는 내가 그들 모두가 자신의 열을 중심 것으로 보인다 것을 좋아하지 않는다는 것입니다. 나는 그들이 TextBoxes에 정렬하고 싶습니다. 여기에 코드가 있습니다.

public void makeTextField(int z, int x, int y, String label, JPanel result){ 
    JPanel jp = new JPanel(); 
    JLabel jl = new JLabel(); 
    jta_array[z] = new JTextArea(); 
    GridBagConstraints gc = new GridBagConstraints(); 

    gc.fill = GridBagConstraints.BOTH; 

    jp.setLayout(new java.awt.GridBagLayout()); 

    jl.setText(label); 
    gc.gridx = 1; 
    gc.gridy = 1; 
    gc.anchor = GridBagConstraints.EAST; 

    jp.add(jl,gc); 

    jta_array[z].setEditable(true); 
    jta_array[z].setColumns(30); 

    gc.gridx = 2; 
    gc.gridy = 1; 
    gc.anchor = GridBagConstraints.WEST; 

    jp.add(jta_array[z],gc); 

    gc.gridx = x; 
    gc.gridy = y; 

    gc.anchor = GridBagConstraints.EAST; 

    result.add(jp,gc);  
} 

public JPanel makePanel() { 
    JPanel jp = new JPanel(); 

    jp.setLayout(new java.awt.GridBagLayout()); 

    makeTextField(0,1,1,"Project Number:", jp); 
    makeTextField(1,1,2,"Project Name:", jp); 
    makeTextField(2,1,3,"Author Name:", jp); 
    makeTextField(3,2,3,"Author Email:", jp); 
    makeTextField(4,3,3,"Author Phone:", jp); 
    makeTextField(5,1,4,"Architect/Designer Name:", jp); 
    makeTextField(6,2,4,"Architect/Designer Email:", jp); 
    makeTextField(7,3,4,"Architect/Designer Phone:", jp); 
    makeTextField(8,1,5,"Contractor Name:", jp); 
    makeTextField(9,2,5,"Contractor Email:", jp); 
    makeTextField(10,3,5,"Contractor Phone:", jp); 

    return jp; 
} 

도움을 주시면 큰 도움이 될 것입니다.


아래의 답변에 해당합니다. 새로운 코드 당신은 두 개의 서로 다른 GridBagLayout의 중첩되는

public void makeTextField(int z, int x, int y, String label, JPanel result){ 
    JLabel jl = new JLabel(); 
    jta_array[z] = new JTextArea(); 
    GridBagConstraints gc = new GridBagConstraints(); 

    gc.fill = GridBagConstraints.BOTH; 

    jl.setText(label); 
    gc.gridx = x; 
    gc.gridy = y; 
    gc.anchor = GridBagConstraints.EAST; 

    result.add(jl,gc); 

    jta_array[z].setEditable(true); 
    jta_array[z].setColumns(30); 

    gc.gridx = x+1; 
    gc.gridy = y; 
    gc.anchor = GridBagConstraints.WEST; 

    result.add(jta_array[z],gc); 

} 

public JPanel makePanel() { 
    JPanel jp = new JPanel(); 

    jp.setLayout(new java.awt.GridBagLayout()); 

    makeTextField(0,1,1,"Project Number:", jp); 
    makeTextField(1,1,2,"Project Name:", jp); 
    makeTextField(2,1,3,"Author Name:", jp); 
    makeTextField(3,3,3,"Author Email:", jp); 
    makeTextField(4,5,3,"Author Phone:", jp); 
    makeTextField(5,1,4,"Architect/Designer Name:", jp); 
    makeTextField(6,3,4,"Architect/Designer Email:", jp); 
    makeTextField(7,5,4,"Architect/Designer Phone:", jp); 
    makeTextField(8,1,5,"Contractor Name:", jp); 
    makeTextField(9,3,5,"Contractor Email:", jp); 
    makeTextField(10,5,5,"Contractor Phone:", jp); 

    return jp; 
} 

new screenshot

답변

2

(다른 이벤트 사람의 그것이 고정 방식을 볼 필요가있다). 동일한 패널에 레이블 및 텍스트 필드를 추가하여 동일하게 제어합니다 (GridBagLayout).

+0

감사합니다. 위의 결과 코드와 스크린 샷을 수정합니다. – Aries7