가능한 경우 창 크기를 조정할 때도 내 창 중앙에 절대 레이아웃을 사용하여 만든 패널을 유지하고 싶습니다. 나는 두 가지 제안을 보았습니다. here과 [여기] [2] 그러나 주사위는 없습니다! 아래 샘플 코드, 아이디어 또는 제안 사항은 무엇입니까? JLable 같은 단일 컴포넌트를 중심으로 문제가 없지만 여러 컴포넌트가있는 패널을 가운데에 배치하고 싶습니다!창 크기가 조정 된 중앙 패널
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.JLabel;
public class TestPanel extends JFrame {
private JLabel lblSetupTitle;
private Border compoundBorder, outlineColorBorder, outlineBorder;
private JTextArea txtrManageData;
private JPanel childPanel;
public TestPanel()
{
setBackground(Color.white);
outlineColorBorder = BorderFactory.createLineBorder(Color.gray);
outlineBorder = BorderFactory.createEmptyBorder(20, 20, 20, 20);
compoundBorder = BorderFactory.createCompoundBorder(outlineColorBorder, outlineBorder);
lblSetupTitle = new JLabel("Setup");
lblSetupTitle.setBounds(443, 288, 44, 23);
txtrManageData = new JTextArea("Text Area Text");
txtrManageData.setBounds(393, 322, 142, 61);
childPanel = new JPanel();
childPanel.setLocation(89, 38);
childPanel.setSize(921, 452);
childPanel.setBorder(compoundBorder);
setupGUIElements();
setupPanel();
}
private void setupGUIElements()
{
txtrManageData.setBackground(null);
txtrManageData.setLineWrap(true);
txtrManageData.setWrapStyleWord(true);
}
private void setupPanel()
{
getContentPane().setLayout(new GridBagLayout()); // set layout of parent panel to GridBagLayout
childPanel.setLayout(null); // set layout of child panel to AbsoluteLayout
childPanel.add(lblSetupTitle);
childPanel.add(txtrManageData);
getContentPane().add(childPanel, new GridBagConstraints());
this.setSize(1020, 500);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TestPanel ex = new TestPanel();
ex.setVisible(true);
}
});
}
}
편집 : 코드이
는 널 (null) 'LayoutManager'를 사용하지 마십시오. – alex2410
BorderLayout 또는 GrudBagLayout은 절대 레이아웃을 사용하여 버스트 실수를 무료로 수행합니다. 이 작업은 지루하고, 진지하고, 반복적 인 작업을 처리하기 위해 레이아웃 관리자가있는 이유 중 하나입니다. – MadProgrammer
아 .. 그리고 'txtrManageData = new JTextArea ("텍스트 영역 텍스트 "); 대신'txtrManageData = new JTextArea ("텍스트 영역 텍스트 ", 3, 20); –