我通過使用方法'parent.addTab(child)'將子面板添加到父面板,並在子面板中添加了一個JLabel,但setBounds方法在子面板中不起作用。這JLabel正在一個修復位置顯示。在父面板中,setBounds工作正常。該怎麼辦?Java Swing佈局問題
2
A
回答
2
您需要爲您的子面板定義合適的佈局管理器。例如,如果您選擇使用BorderLayout
,你可以安排在標籤面板的中心顯示如下:
JTabbedPane parent = new JTabbedPane();
JPanel child = new JPanel(new BorderLayout());
// Create label with centrally aligned text (default is left).
JLabel label = new JLabel("Hello, World", JLabel.CENTER_ALIGNMENT);
// Add label to center of the child panel.
child.add(label, BorderLayout.CENTER);
// Add child panel as a tab within parent JTabbedPane.
// The child panel will expand to fit the size of the tab.
parent.addTab("My Tab", child);
更多靈活的佈局考慮使用GridBagLayout
。
0
setBounds
僅適用於佈局設置爲null
的容器。 (或用於在桌面上移動框架)。
JPanel
的默認佈局管理器是FlowLayout
,它按水平順序佈置組件,並在當前填滿時(如頁面中的文本)拖放到新行。
使用null
佈局和setBounds
不奠定了GUI的一個推薦的方式 - 這是非常脆弱的 - 過分依賴於容器/框架和桌面可以輕鬆突破的尺寸,分辨率和字體設置的大小布局。
通讀Swing教程的Using Layout Managers部分,瞭解哪些佈局管理器可以幫助您實現自己想要的功能。
相關問題
- 1. Java swing佈局問題
- 2. Swing佈局問題
- 3. Swing佈局問題
- 4. Swing佈局問題到Java 8
- 5. 的Java Swing網格佈局問題
- 6. Java Swing佈局塊
- 7. 的Java Swing佈局
- 8. 佈局問題 - Java
- 9. Java佈局問題
- 10. Java佈局問題
- 11. 佈局使用的Java Swing
- 12. Java邊框佈局問題?
- 13. Java挑選佈局問題
- 14. Java UI佈局問題
- 15. Java swing - list.add問題
- 16. Java Swing FocusTraversalPolicy問題
- 17. Java Swing textfield問題
- 18. Java Swing Threading問題
- 19. Java Swing GUI - 問題
- 20. 佈局問題
- 21. 佈局問題
- 22. 佈局問題
- 23. 佈局問題
- 24. Java swing佈局,3個面板
- 25. 讓Java Swing程序再次佈局
- 26. Java Swing佈局這些組件
- 27. 如何調試Java Swing佈局
- 28. 佈局中的Java Swing指定大小
- 29. 進行動態佈局的Java Swing
- 30. 的Java Swing搬走從空佈局