如何解决如何防止JButton更改大小?
我正在玩JFrame
窗口(因为我是Java的新手),当我手动最大化JButton
时,发现JFrame
的大小发生了变化。当我没有最大化屏幕时,它仍然是我设置的大小。
我可以获得任何帮助吗?
这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Frames {
public static void main(String[] args) {
Image icon = Toolkit.getDefaultToolkit().getimage("C:\\Users\\admin\\Documents\\Test Stuff\\icon.png");
JFrame frame = new JFrame("Frame");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLayout(new FlowLayout());
frame.setSize(856,482);
frame.setLocation(384,216);
frame.getContentPane().setBackground( Color.cyan );
frame.setIconImage(icon);
frame.setVisible(true);
frame.setDefaultCloSEOperation(WindowConstants.EXIT_ON_CLOSE);
JButton buttonClose = new JButton("Close");
buttonClose.setSize(100,50);
buttonClose.setLocation(378,10);
buttonClose.addActionListener(e -> {
frame.dispose();
});
buttonClose.setVisible(true);
buttonClose.setBackground(Color.green);
frame.add(buttonClose);
}
}
解决方法
请勿使用setSize()或setBounds()或setPreferredSize()。
Swing旨在与布局管理器一起使用。
您正在使用FlowLayout。 FlowLayout将遵守按钮的大小。
代码的问题是,在可见该框架之后,将按钮添加到框架,因此最初不调用布局管理器,而是以您为其设置的随机大小显示按钮。当您最大化框架时,将调用布局管理器,以便按钮以其首选大小显示。
在使框架可见之前,应将摆动组件添加到框架中。因此,逻辑的基本顺序应为:
frame.add( button );
frame.setVisible( true );
按钮将以适当的大小显示。
如果您想在按钮的文本周围留有多余的空格,则可以使用按钮的属性来控制它:
JButton button = new JButton(...);
button.setMargin( new Insets(20,20,20) );
,
执行Jarlik所说的话:
buttonClose.setPrefferedSize(new Dimension(100,50));
而不是setSize()。然后将frame.setVisible(true);
移到底部。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。