gpt4 book ai didi

java - 自动调整按钮宽度

转载 作者:行者123 更新时间:2023-11-29 03:26:01 25 4
gpt4 key购买 nike

我有一个带有 3 个按钮的 JPanel(它是一个 JPanel,它将包含一个带有按钮和 JLabels 的菜单)。

按钮需要堆叠在一起,它们之间有一个小空间。

我将按钮堆叠在一起:

 BoxLayout myLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
this.setLayout(myLayout);
this.setPreferredSize(new Dimension(300,150));

现在按钮在添加时会自动堆叠,但它们的大小都不同,具体取决于其中的文本量。

我想要的是按钮位于 JPanel 的中心并且具有面板的宽度 - 每侧 10 像素。

我有什么:

给出所有按钮:

    .setPreferredSize(new Dimension(280,20));

但这并没有什么不同。

为了更清楚,我将发布完整的代码,以便您明白我的意思:

private JButton buttonStartStop;
private JButton buttonReset;


public ViewControlsPanel()
{
BoxLayout myLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
this.setLayout(myLayout);

this.setPreferredSize(new Dimension(300,150));

buttonStartStop = new JButton("Start");
buttonStartStop.setPreferredSize(new Dimension(280,30));

buttonReset = new JButton("Reset");
buttonReset.setPreferredSize(new Dimension(280,20));


this.add(buttonStartStop);
this.add(buttonReset);

}

我试图给出不同的尺寸,但没有帮助。

我的猜测是可以给 BoxLayout 一个属性来为包含的组件提供一个首选大小,但我找不到它。

最佳答案

What I want is the buttons to be in the Center of the JPanel and have the width of the panel - 10 px on each side.

这似乎最适合具有 10 像素的 EmptyBorder 的单列 GridLayout(除非我误解了要求)。

Single Column Of Buttons Layout

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

public class SingleColumnOfButtonsLayout {

public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
// the GUI as seen by the user (without frame)
JPanel gui = new JPanel(new GridLayout(0,1,10,10));
gui.setBorder(new EmptyBorder(10,10,10,10));

gui.add(new JButton("Start"));
gui.add(new JButton("Reset"));
gui.add(new JButton("A Very Long String"));

JFrame f = new JFrame("Single Column of Buttons Layout");
f.add(gui);
// Ensures JVM closes after frame(s) closed and
// all non-daemon threads are finished
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// See http://stackoverflow.com/a/7143398/418556 for demo.
f.setLocationByPlatform(true);

// ensures the frame is the minimum size it needs to be
// in order display the components within it
f.pack();
// should be done last, to avoid flickering, moving,
// resizing artifacts.
f.setVisible(true);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency
SwingUtilities.invokeLater(r);
}
}

关于java - 自动调整按钮宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20941219/

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