[英]How to Center Jpanel in JFrame?
有一個擴展JFrame
的類。 然后,進一步的JFrame
具有名為contentPane的JPanel
,此Jpanel包含另外2個jpanel。 如圖所示的樹。
我想在JFrame
將該contentPane居中,以便在更改JFrame
大小時, JPanel
(contentPane)保持居中。 我嘗試使用不同的Layouts
但沒有提出正確的Layouts
。 有什么辦法嗎? 整張圖片在這里
代碼是這個。
public class Purchases extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Purchases frame = new Purchases();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 513, 438);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setBounds(10, 10, 477, 193);
contentPane.add(panel);
panel.setLayout(null);
JPanel panel_1 = new JPanel();
panel_1.setBounds(10, 214, 477, 174);
contentPane.add(panel_1);
panel_1.setLayout(null);
}
這段代碼是Eclipse自動生成的。 我沒有在JFrame中找到contentPane的位置。
將框架的布局設置為GridBagLayout
。 將現有內容包裝到另一個JPanel
,將此面板添加到框架中
看一看在容器中布置組件以及如何使用GridBagLayout以獲得更多詳細信息
您確實應該避免使用null
布局,像素完美布局是現代ui設計中的一種幻覺。 有太多因素會影響組件的單個大小,您無法控制。 Swing旨在與布局經理為核心一起工作,舍棄這些問題不會導致問題和問題的終結,您將花費越來越多的時間來嘗試糾正
我已經為您制作了樣品。 根據需要進行修改。 只是想向您展示您想要什么,正在工作。
TestClass()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 513, 438);
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
JButton b1 = new JButton("hello");
JPanel panel = new JPanel(new BorderLayout());
//panel.setBounds(10, 10, 477, 193);
panel.add(b1, BorderLayout.CENTER);
contentPane.add(panel, BorderLayout.EAST);
//panel.setLayout(null);
JButton b2 = new JButton("why");
JPanel panel_1 = new JPanel(new BorderLayout());
//panel_1.setBounds(10, 214, 477, 174);
panel_1.add(b2, BorderLayout.CENTER);
contentPane.add(panel_1, BorderLayout.WEST);
//panel_1.setLayout(null);
this.getContentPane().add(contentPane);
}
希望這會有所幫助。 :-)
我認為您應該設置元素的最大尺寸並將其設置為對齊中心:
setAlignmentX(JComponent.CENTER_ALIGNMENT);
setMaximumSize(new Dimension(100, 100));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.