JLayeredPane
을 사용하여 스윙 GUI에서 작업하고 있습니다. JFrame
에는 JLayeredPane
이 있으며 여기에는 두 개의 JPanel
이 포함되어 있습니다. 나중에 JPanel
에 일부 구성 요소를 표시하고 싶습니다.이 부분을 잘라내어 더 짧게 만듭니다.JLrame을 JLayeredPane 내의 JPanels로 크기 조정
JFrame
의 크기를 JPanel
크기로 조정하는 방법은 무엇입니까? frame.pack()
이 작동하지 않고 라인 설정없이 원하는 크기의 GUI가 최소 크기로 표시됩니다.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class TestGUI {
private JFrame frame;
private JLayeredPane layeredPane;
private JPanel panelBottom;
private JPanel panelTop;
private MainMenuBar menuBar;
public TestGUI() {
// panel bottom:
panelBottom = new JPanel();
panelBottom.setSize(1000, 500);
panelBottom.setBackground(new Color(0, 100, 0, 100));
panelBottom.setLayout(new GridBagLayout());
// panel top:
panelTop = new JPanel();
panelTop.setSize(950, 450);
panelTop.setBackground(new Color(0, 0, 100, 100));
panelTop.setLayout(new GridBagLayout());
// layered pane:
layeredPane = new JLayeredPane();
layeredPane.add(panelBottom, 1);
layeredPane.add(panelTop, 0);
// frame building:
frame = new JFrame();
menuBar = new MainMenuBar();
frame.setJMenuBar(menuBar);
frame.setLayout(new BorderLayout());
frame.setPreferredSize(new Dimension(1100, 600)); // <-- Without this the GUI will be very small
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(layeredPane, BorderLayout.CENTER);
frame.pack(); // <-- does not work!
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
new TestGUI();
}
}
편집 : 난 그냥 가장 큰 JPanel에 맞게 적절한 사이즈 라인을 변경할 수 있지만, 나는 JPanel
의 동적의 크기에 따라 크기를 조정 JFrame
를 원하기 때문에 내가 질문을.
도움을 주셔서 감사합니다! OverlayLayout 사용이 효과적입니다! – ConveniencePatterns