有一个扩展JFrame
的类。然后进一步JFrame
JPanel
名为contentPane,此Jpanel包含2个jpanel。如图所示的树。
我想在JFrame
中将 contentPane 置于中心位置,以便在更改JFrame
JPanel
(contentPane)的大小时保持中心位置。我尝试过不同的Layouts
,但没有提出正确的问题。有什么办法吗?
整页图片为here
代码是这样的。
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的位置。
答案 0 :(得分:3)
将框架的布局设置为GridBagLayout
。将您现有的内容包装在另一个JPanel
中,将此面板添加到框架
请查看Laying Out Components Within a Container和How to Use GridBagLayout了解详情
你真的应该避免使用null
布局,像素完美布局是现代ui设计中的错觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正
答案 1 :(得分:0)
我为你做了一个样品。根据您的需要进行修改。只是想告诉你你想要什么,正在发挥作用。
let pulsator = Pulsator()
pulsator.radius = 240.0
pulsator.numPulse = 5
viewSearchArea.layer.addSublayer(pulsator)
pulsator.start()
希望这会有所帮助。 : - )
答案 2 :(得分:-1)
我认为您应该设置元素的最大大小&将其设置为对齐中心:
setAlignmentX(JComponent.CENTER_ALIGNMENT);
setMaximumSize(new Dimension(100, 100));
如下所述: How can I properly center a JPanel ( FIXED SIZE ) inside a JFrame?