는 그와 같은 응용 프로그램의 레이아웃을 개발하기 위해 노력하고있어 :MigLayout 열 제약
* +------------------+--------+
* | | |
* | | |
* | | |
* | 70% | 30% |
* | | |
* | | |
* | | |
* | | |
* | | |
* +------------------+--------+
이 작업을 수행하려면, 내가 MigLayout을 사용하고 있습니다. 이 cheat sheet에 따르면 열 무게를 설정하기 위해 우리는 [weight]
을 사용합니다. 그러나, 어떻게 든 작동하지 않습니다. 내 코드를 살펴 :
package com.test;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import net.miginfocom.swing.MigLayout;
public class MainWindow {
private JFrame frame;
private JTextField iterationsTextField;
private JTextField populationSizeTextField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MainWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new MigLayout("", "[grow 70][grow 30]", "[grow]"));
JPanel canvasPanel = new JPanel();
frame.getContentPane().add(canvasPanel, "cell 0 0,grow");
canvasPanel.setLayout(new MigLayout("", "[]", "[]"));
JPanel settingsPanel = new JPanel();
settingsPanel.setBorder(new TitledBorder(null, "Settings", TitledBorder.LEADING, TitledBorder.TOP, null, null));
frame.getContentPane().add(settingsPanel, "cell 1 0,grow");
settingsPanel.setLayout(new MigLayout("", "[][grow]", "[][]"));
JLabel iterationsLabel = new JLabel("Iterations");
settingsPanel.add(iterationsLabel, "cell 0 0,alignx trailing");
iterationsTextField = new JTextField();
iterationsTextField.setText("1000");
settingsPanel.add(iterationsTextField, "cell 1 0,growx");
iterationsTextField.setColumns(10);
JLabel populationSizeLabel = new JLabel("Population");
settingsPanel.add(populationSizeLabel, "cell 0 1,alignx trailing");
populationSizeTextField = new JTextField();
settingsPanel.add(populationSizeTextField, "cell 1 1,growx");
populationSizeTextField.setColumns(10);
}
}
나는 settingsPanel
30 %이어야한다 동안이 구성 "[grow 70][grow 30]"
패널 canvasPanel
를 사용하여 프레임을 설정하면, 화면 너비의 70 %가되어야한다고 생각합니다. 최종 결과를 살펴 : 당신이 볼 수 있듯이, settingsPanel
가 WAY 이상 canvasPanel
보다
. 내가 놓친 게 있니?
미리 감사드립니다.
grow 70
하나의 제약 조건이며, 숫자가 추가 공간을 얻을 수있는 컬럼의 열망의 상대적 무게를 정의
유전자 알고리즘 응용 프로그램을 개발하고 있습니까? :) – HCarrasko
@Hector ahahha, 네! :) – Doon
정확하게 기억하면'[grow, 70 %]' – kleopatra