我正在尝试打开一个包含特定WINDOW_WIDTH
和WINDOW_HEIGHT
的窗口。
/**
* Program to calculate a tip based on a restaurant bill
* @author Nick Gilbert
*/
import javax.swing.*;
import java.awt.*;
public class TipCalculator extends JFrame {
private JFrame frame1;
private JLabel label1;
private JPanel panel1;
private JTextField askBill;
private final int WINDOW_WIDTH = 400; // Window width
private final int WINDOW_HEIGHT = 300; // Window height
/**
* Constructor
*/
public TipCalculator(){
setTitle("Tip Calculator!");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
panel1 = new JPanel();
label1 = new JLabel("Enter bill:");
askBill = new JTextField(10);
panel1.add(label1);
panel1.add(askBill);
add(panel1, BorderLayout.NORTH);
pack();
setVisible(true);
}
public static void main(String[] args) {
new TipCalculator();
}
}
然而,当我运行它时,我用setSize
方法指定的宽度和高度没有效果,我不明白为什么
答案 0 :(得分:1)
您正在致电pack
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
//...
pack();
来自JavaDocs ...
public void pack()
使这个窗口的大小适合 其子组件的首选大小和布局。得到的宽度 如果有的话,窗口的高度会自动放大 尺寸小于前面指定的最小尺寸 调用setMinimumSize方法。
如果窗口和/或其中 所有者尚不可显示,两者都可显示 在计算首选大小之前。窗口经过验证 它的大小正在计算中。
这实际上是调整窗口大小的首选方法,因为它考虑了平台之间的差异。这也意味着窗口的可视空间(窗口边界内的区域)与其内容的首选大小相匹配。
调用setSize
会使寡妇的大小变大,这意味着内容将是指定的大小 - 窗口边框,不同的外观和平台会有所不同。