다음 코드에서 JTextArea를 기본 패널에 추가하면 표시되지 않습니다. controlPanel을 추가하면 가장자리가 아닌 가운데에 표시됩니다. 나는 GridBagLayout에 익숙하지 않아, 나는 간단한 것을 놓치고 있다고 가정하고있다.GridBagLayout이 JTextArea를 표시하지 않고 가운데에 패널을 표시합니다.
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextArea;
public class Main {
public static void main(String[] args) {
new Main();
}
public Main() {
JFrame frame = new JFrame();
JPanel mainPanel = new JPanel();
JPanel controlPanel = new JPanel();
mainPanel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
controlPanel.add(new JButton("Play"));
controlPanel.add(new JButton("Pause"));
controlPanel.add(new JSpinner());
JTextArea textArea = new JTextArea();
c.gridx = 0;
c.gridy = 0;
c.gridheight = 3;
c.gridwidth = 3;
mainPanel.add(textArea, c);
// mainPanel.add(controlPanel, c);
frame.add(mainPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700, 700);
frame.setLocation(250, 100);
frame.setVisible(true);
}
}
편집 : 제약 제안 후 어떻게 보이는지이입니다. textArea가 여전히 표시되지 않습니다.
c.gridx = 0;
c.gridy = 0;
// c.gridheight = 3;
// c.gridwidth = 3;
c.weightx = 1.0;
c.weighty = 1.0;
c.anchor = GridBagConstraints.NORTHWEST;
mainPanel.add(textArea, c);
// mainPanel.add(controlPanel, c);
frame.add(mainPanel);
왜 가장자리에 나타나기를 기대합니까? –
@ TomHawtin-tackline 그게 아니라 gridx = 0 및 gridy = 0 의미합니까? – gsingh2011
아니, 그들은 단지 임의의 격자 번호입니다. GB의 경우 오른쪽에 약간의 무게가있는 스페이서 구성 요소를 추가하십시오. –