gpt4 book ai didi

java - JFrame 中心组件

转载 作者:行者123 更新时间:2023-11-30 08:05:26 25 4
gpt4 key购买 nike

我想知道如何将我的组件居中,我找到了 gridBagLayout,但我找不到让它比实际更大的方法:我的按钮太小了。

我的代码的一部分:

private void addMainButtons() {
JPanel container = new JPanel() {
private static final long serialVersionUID = -424395301619105440L;

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension dim = this.getSize();
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
g.setFont(new Font("TimesRoman", Font.PLAIN, 20));
g.setColor(Color.BLACK);
String s = format.format(date);
g.drawString(s, (int) ((dim.getWidth() - s.length() - 80) / 2), 20);
}
};
container.setBackground(new Color(109, 69, 60));

JButton productsButton = new JButton("Produits");
productsButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(frame, pages[1]);
}
});
productsButton.setAlignmentY(Component.CENTER_ALIGNMENT);
productsButton.setAlignmentX(Component.CENTER_ALIGNMENT);

// Creating grid
container.setPreferredSize(new Dimension(400, 600));
container.setLayout(new GridBagLayout());

GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
container.add(productsButton, gbc);

gbc.gridy = 1;
gbc.gridwidth = 1;
container.add(new JButton("Entrée"), gbc);

gbc.gridx = 1;
container.add(new JButton("Sortie"), gbc);

mainPage.setLayout(new BorderLayout());
mainPage.add(container, BorderLayout.CENTER);
// End of main page
}

GridBagLayout真的很难用,有没有其他方法让组件居中?我可以使用 NestedLayouts,但我不知道如何使用。

最佳答案

您可以使用 weightx 和/或 weighty 来影响组件将占用的空间量,例如,如果我这样做

GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;

gbc.weightx = 1;
gbc.weighty = 1;

container.add(productsButton, gbc);

gbc.gridy = 1;
gbc.gridwidth = 1;
container.add(new JButton("Entrée"), gbc);

gbc.gridx = 1;
container.add(new JButton("Sortie"), gbc);

我可以生成这个...

Big Buttons

您可以使用两个容器,一个包含显示日期的 JLabel,另一个包含按钮,但我怀疑这就是您真正想要的。

您可以使用 ipadxipady 将金额添加到组件首选大小

GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;

gbc.ipadx = 40;
gbc.ipady = 40;

container.add(productsButton, gbc);

gbc.gridy = 1;
gbc.gridwidth = 1;
container.add(new JButton("Entrée"), gbc);

gbc.gridx = 1;
container.add(new JButton("Sortie"), gbc);

Not so big buttons

当包含在现有约束中时,您可以稍微“增大”按钮。

关于java - JFrame 中心组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com