다소 간단한 GUI가 있으며 창 왼쪽에 버튼과 컨트롤을 만들려고합니다. 오른쪽에는 결국 내용을 표시하는 텍스트 영역이 있습니다. 왼쪽에는 사용자가 조작 할 수있는 버튼과 컨트롤이 있습니다. 나는 지금 가지고있는 것을 만들기 위해 많은 레이아웃 관리자 (그리고 그들은 상당히 까다 롭다)를 사용했다.Java GUI의 크기를 조정할 때 세로 간격을 방지하십시오.
왼쪽 컨트롤의 컨테이너가 사용하는 BoxLayout에 대한 오라클의 문서를 살펴 보았습니다. 윈도우 크기를 조정할 때 버튼 간격이 벌어지는 것을 방지 할 수있는 방법이 없습니다. 나는 그 (것)들을 정상에 위로 박살 내고 다만 간격을두기없이 거기 체재 한 ㄴ다는 것을 싶을. BoxLayout의 '글루'기능은 실제로 당신이 생각하는대로하지 않습니다. 아마 고무 밴드라고해야합니다.
내 질문은 화면의 크기가 조정됨에 따라 왼쪽의 콘텐츠가 더 넓고 넓게 분리되는 것을 어떻게 유지합니까?
내 GUI가 :
당신이 상자 레이아웃을 사용하여 고정하는 경우public class TestCode extends JFrame{
JTextArea textArea = new JTextArea();
JComboBox <String> typeComboBox;
JTextField searchField;
JTextField fileField;
public TestCode() {
System.out.println ("In constructor");
setTitle ("GUI Test");
setSize (600, 300);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
JButton readButton = new JButton("Read File");
JButton displayButton = new JButton("Display");
JButton searchButton = new JButton("Search");
searchField = new JTextField(10);
fileField = new JTextField(15);
typeComboBox = new JComboBox <String>();
typeComboBox.addItem("Index");
typeComboBox.addItem("Type");
typeComboBox.addItem("Name");
JPanel container = new JPanel();
container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
JPanel filePanel = new JPanel();
filePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
filePanel.add(new JLabel("Source file:", SwingConstants.RIGHT));
filePanel.add(fileField);
filePanel.add(readButton);
JPanel displayPanel = new JPanel();
displayPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
displayPanel.add(new JLabel("Display data:", SwingConstants.RIGHT));
displayPanel.add(displayButton);
JPanel searchPanel = new JPanel();
searchPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
searchPanel.add(new JLabel ("Search target"));
searchPanel.add(Box.createHorizontalBox());
searchPanel.add(searchField);
searchPanel.add(typeComboBox);
searchPanel.add(Box.createHorizontalBox());
searchPanel.add(searchButton);
container.add(filePanel);
container.add(displayPanel);
container.add(searchPanel);
add(container, BorderLayout.WEST);
validate();
}
하나의 레이아웃 대신 여러 레이아웃을 사용하려고합니다. –
저는 박스 레이아웃과 레이아웃을 가지고 있습니다. 상자 레이아웃은 행이 분리되도록 허용합니다. – leigero
BoxLayout에 익숙하지 않지만이 경우 "왼쪽"컨테이너에 AbsoluteLayout을 사용했을 것입니다. 어쩌면 이것은 선택 사항 일 수 있습니다. –