2014-06-17 4 views
1

다양한 텍스트 파일을 완성 된 노트북으로 이미 컴파일 한 프로그램의 GUI를 작성하려고합니다. 이 GUI의 한 기능은 스크롤 창에 여러 파일 탐색 텍스트 영역과 버튼이 있으며 더하기 또는 빼기 버튼으로 더 많은 것을 추가하거나 제거 할 수 있다는 것입니다.자바 스윙 텍스트 필드 높이

기본 크기를 설정하더라도 텍스트 영역이 나머지 공간을 차지하도록 기본값 설정되어 있습니다. 단추와 같은 높이이거나 그 근처에있을 수있는 방법이 있습니까?

내 GUI가 지금 모습입니다.

다음은 내 코드입니다.

import javax.swing.*; 
import java.awt.*; 
import java.util.*; 

public class GUI { 

    public static void main(String[] args) { 

     JFrame frame = new JFrame("Notebook Builder"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel contentPanel = new JPanel(); 
     contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.X_AXIS)); 
     contentPanel.setPreferredSize(new Dimension(860, 500)); 

     JPanel leftPanel = new JPanel(); 
     leftPanel.setLayout(new BorderLayout()); 
     leftPanel.setPreferredSize(new Dimension(480, 500)); 

     JScrollPane rightPanel = new JScrollPane(); 
     rightPanel.setPreferredSize(new Dimension(480, 500)); 

     frame.getContentPane().add(contentPanel); 

     contentPanel.add(leftPanel); 
     contentPanel.add(rightPanel); 

     JPanel headerPanel = new JPanel(); 
     JLabel headerLabel = new JLabel("Directories"); 
     headerLabel.setFont(new Font("serif", Font.BOLD, 32)); 
     headerPanel.add(headerLabel); 

     JPanel directoryBrowserPanel = new JPanel(); 
     directoryBrowserPanel.setLayout(new BoxLayout(directoryBrowserPanel, BoxLayout.Y_AXIS)); 
     JScrollPane directoryBrowserPanelView = new JScrollPane(directoryBrowserPanel); 

     JPanel addOrRemoveButtonPanel = new JPanel(); 
     addOrRemoveButtonPanel.setLayout(new BoxLayout(addOrRemoveButtonPanel, BoxLayout.X_AXIS)); 

     JButton remove = new JButton("-"); 
     JButton add = new JButton("+"); 

     JPanel directoryBrowserFieldPanel = new JPanel(); 
     directoryBrowserFieldPanel.setLayout(new BoxLayout(directoryBrowserFieldPanel, BoxLayout.X_AXIS)); 

     JTextField filePathField = new JTextField(); 

     JButton fileChooseButton = new JButton("Browse"); 

     directoryBrowserFieldPanel.add(filePathField); 
     directoryBrowserFieldPanel.add(fileChooseButton); 
     addOrRemoveButtonPanel.add(remove); 
     addOrRemoveButtonPanel.add(Box.createRigidArea(new Dimension(80, 0))); 
     addOrRemoveButtonPanel.add(add); 
     directoryBrowserPanel.add(directoryBrowserFieldPanel); 
     directoryBrowserPanel.add(addOrRemoveButtonPanel); 

     JPanel buildButtonPanel = new JPanel(); 
     JButton buildButton = new JButton("Build Notebook"); 
     buildButton.setFont(new Font("serif", Font.PLAIN ,12)); 
     buildButtonPanel.add(BorderLayout.CENTER, buildButton); 

     leftPanel.add(BorderLayout.NORTH, headerPanel); 
     leftPanel.add(BorderLayout.CENTER, directoryBrowserPanelView); 
     leftPanel.add(BorderLayout.SOUTH, buildButtonPanel); 

     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

죄송합니다. 간단한 질문 인 경우 Java의 콘솔 프로그램에서 처음으로 이탈하는 것입니다.

고마워요.

+5

시작을 살펴 보시기 바랍니다 [나는 세트의 사용을 피해야한다 (을 선호 | 최대 | 최소)? 자바 스윙의 크기 방법 (http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumize-methods-in-java-swi) 그런 다음 'LayoutManager' 이외의'BoxLayout' 같은 것을 사용하는 것을 고려해보십시오. FlowLayout 또는 심지어 GridBagLayout 예 : – MadProgrammer

+0

FlowLayout가 작동합니다. 감사. 레이아웃 관리자가 다른 관리자의 키를 처리하는 방식 때문인 것 같네요? 나는 또한 선호하는 높이를 사용하지 않았다. – user1472065

+2

그것이 효과가 있다면,이 사이트에 대한 미래의 방문자를 돕기 위해 자신의 질문에 대답 할 수 있습니다. –

답변

1

BoxLayout 대신 GridbagLayout을 사용하십시오. 나는 그것이 더 유용하다고 생각한다. 샘플 코드는 아래

int xPos=0; 
    int yPos=0; 
    directoryBrowserFieldPanel.setLayout(new GridBagLayout()); 
    directoryBrowserFieldPanel.add(filePathField, new GridBagConstraints(xPos++, yPos, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0)); 
    directoryBrowserFieldPanel.add(fileChooseButton, new GridBagConstraints(xPos++, yPos, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0, 0)); 

아나 봐 복용에 의해 A Visual Guide to Layout Managers