如何修改JFrame中面板的大小
我正在做一个计算器,第一个面板将保存JTextField,我认为它很小 第二个面板将保持JButtons,假设它更大
JFrame frame = new JFrame(new GridLayout(2, 1));
JPanel panel1 = new JPanel();
JPanel panel2 = new JPabel();
frame.add(panel1);
frame.add(panel2);
我一直试图让panel1小于panel2,但没有任何效果!
答案 0 :(得分:1)
在这种情况下,GridLayout不是一个合适的选择,因为它忽略了容器内组件的首选大小,而是以相同的大小显示它们。
我建议使用BorderLayout。您可以在Oracle教程A Visual Guide to Layout Managers中找到该布局管理器以及其他一些示例和描述。
这是使用BorderLayout的另一个例子,它可能与您的问题更相关。
import java.awt.*;
import javax.swing.*;
public class Test {
public static void main(String []args){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.setBorder(BorderFactory.createTitledBorder("Panel 1"));
panel2.setBorder(BorderFactory.createTitledBorder("Panel 2"));
frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(200, 200));
frame.setVisible(true);
}
});
}
}
编辑:默认情况下,JFrame的内容窗格使用BorderLayout,因此没有调用setLayout
。 Source