gpt4 book ai didi

java - 使用 GridBagLayout 使 JButton 大小相等

转载 作者:行者123 更新时间:2023-12-02 03:05:19 25 4
gpt4 key购买 nike

我想知道是否可以在 GridBagLayout 中设置 JButton 组件的大小,我希望每个按钮之间都有“开始”和“退出”按钮其他,我想让它们更大,大小无关,我想知道一般程序。

我尝试了在互联网上找到的不同内容(使用其他布局),但结果却出现了更多错误。

public class Display implements Runnable
{

public Display()
{

}

@Override
public void run() {

JFrame frame = new JFrame();
frame.setTitle("Title");
frame.setPreferredSize(new Dimension(500,700));

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
createComponents(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}

private void createComponents(Container cont)
{

GridBagLayout pane = new GridBagLayout();
JButton button1 = new JButton("Start");
JButton button2 = new JButton("Quit");

button1.setSize(new Dimension(200,200));
button1.setAlignmentX(Component.CENTER_ALIGNMENT);
button2.setAlignmentX(Component.CENTER_ALIGNMENT);


cont.setLayout(pane);
cont.add(button1);
cont.add(button2);

}

public static void main(String[] args)
{

Display d = new Display();
SwingUtilities.invokeLater(d);

}
}

How it should look:

最佳答案

正如Hovercraft Full Of Eels所提到的,这非常适合单列GridLayout。网格布局使所有组件的大小相同。提供一些布局组件间距并向包含按钮的面板添加一个较大的空边框,工作就完成了。

..and I want to make them (buttons) bigger

有多种方法可以使按钮变大。例如

  1. 设置更大的字体。
  2. 调用 setMargin(Insets) 在文本周围添加更多空间。
  3. 使用大图标。
  4. 使文本更长(以获得更大的宽度)。

第三种和第四种方法是相当任意的。

<小时/>

此示例使用前两个,以及按钮周围的空边框以提供更多空白。

enter image description here

查看代码中的注释以了解详细信息。

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class ButtonColumnLayout {

private JComponent ui = null;
String[] labels = {"Start", "Stop", "Quit"};
// adjust numbers to change spacing between button text and button edge
Insets insets = new Insets(10,40,10,40);

ButtonColumnLayout() {
initUI();
}

public void initUI() {
if (ui!=null) return;

// adjust last two numbers to change spacing between buttons
ui = new JPanel(new GridLayout(0, 1, 10, 10));
// adjust numbers to change border around buttons
ui.setBorder(new EmptyBorder(40,100,40,100));

for (String s : labels) {
ui.add(getBigButton(s));
}
}

private final JButton getBigButton(String text) {
JButton b = new JButton(text);
// adjust float value to change font size
b.setFont(b.getFont().deriveFont(25f));
b.setMargin(insets);

return b;
}

public JComponent getUI() {
return ui;
}

public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
ButtonColumnLayout o = new ButtonColumnLayout();

JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);

f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());

f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}

关于java - 使用 GridBagLayout 使 JButton 大小相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41840994/

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