gpt4 book ai didi

java - 更改按钮大小 FlowLayout

转载 作者:行者123 更新时间:2023-12-01 23:18:15 26 4
gpt4 key购买 nike

我正在尝试更改按钮大小,但是当我设置宽度时,即使高度有自己的值,高度也会自动更改。如何仅更改宽度(或高度)?我需要这个来我的“重置”和“计算”按钮。代码(没有不必要的其他代码)

class Wind extends JButton {
//declaration of variables
@Override
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
int s = (int) (d.getWidth() < d.getHeight() ? d.getHeight() : d.getWidth());
return new Dimension(s, s);
}
public static void main(final String[] args) {
Runnable r = new Runnable() {

@Override
public void run() {

JComponent gui = new JPanel(new FlowLayout());

for (int ii = 1; ii < 20; ii++) {
final JButton button = new Wind("");

gui.add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}

});

}

gui.setBorder(new EmptyBorder(4, 3, 4, 8));
final JButton reset = new Wind("Reset");
Dimension dim = new Dimension(40,80);

reset.setPreferredSize(dim);

gui.add(reset);

reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

}

});

JFrame f = new JFrame("Name of my frame");
f.add(gui);

final JButton cal = new Wind("Calc");

gui.add(cal);
cal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { }
});

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.pack();
f.setVisible(true);
f.setSize(350, 450);
f.setResizable(false);
}
};
SwingUtilities.invokeLater(r);
}

}

最佳答案

嗯,据我所知,您强制 Wind 实例的宽度和高度具有相同的值:

@Override
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
int s = (int) (d.getWidth() < d.getHeight() ? d.getHeight() : d.getWidth());
return new Dimension(s, s);
}

Wind#getPreferredSize 返回一个 Dimension 实例,其中包含 Wind 实例所需的宽度和高度。在您的情况下,它返回一个由两倍相同值组成的 Dimension 实例:s,这是您通过 Wind 设置的宽度和高度中的最大值#setPreferredSize。您可能想按照 @Elliott Frisch 刚刚建议的那样去做:)

顺便说一句,你也在最后做的事情:

frame.pack()
...
frame.setSize(...);

在我看来,您应该选择其中之一,但是调用这两种方法是没有意义的:)

关于java - 更改按钮大小 FlowLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895554/

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