Java 如何防止JButton改变大小?
我当时正在玩Java 如何防止JButton改变大小?,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,我当时正在玩JFramewindows(因为我是Java新手),我发现当我手动最大化JFrame时,我的JButton改变了大小。当我没有最大化屏幕时,它仍然是我设置的大小 我能得到任何帮助吗 这是我的密码: import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Frames { publ
JFrame
windows(因为我是Java新手),我发现当我手动最大化JFrame
时,我的JButton
改变了大小。当我没有最大化屏幕时,它仍然是我设置的大小
我能得到任何帮助吗
这是我的密码:
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);
}
}
照Jarlik说的做:
buttonClose.setPreferedSize(新维度(100,50))代码>
而不是setSize()。并移动frame.setVisible(true)代码>到底部。不要使用setSize()或setBounds()或setPreferredSize()
Swing设计用于布局管理器
您正在使用FlowLayout。FlowLayout将考虑按钮的大小
代码的问题是,在框架可见后将按钮添加到框架中,因此最初不会调用布局管理器,并且按钮会以您为其设置的随机大小显示。当您最大化框架时,将调用布局管理器,以便按钮以其首选大小显示
在使框架可见之前,应将回转组件添加到框架中。因此,逻辑的基本顺序应该是:
frame.add( button );
frame.setVisible( true );
按钮将以适当的大小显示
如果要在按钮文本周围留出“额外”空间,请使用按钮的属性来控制:
JButton button = new JButton(...);
button.setMargin( new Insets(20, 20, 20, 20) );
尝试按钮关闭.setPreferedSize(新维度(100,50))代码>(1-)不要使用setPreferredSize()硬编码按钮的大小。有一些Swing属性允许您自定义大小。