JPanel占据了额外的区域

时间:2017-02-10 12:52:07

标签: java swing layout-manager gridbaglayout gridlayoutmanager

我想在calculator中制作一个java。我是Layout Managers的新手。我使用JFrame创建了一个GridBagLayout对象。我创建了2个JPanel,一个用于数字,另一个用于操作。 JPanel使用GridLayout

这是JFrame中的排列方式。

window=new JFrame("Calculator");

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(new GridBagLayout());

//Creating window
GridBagConstraints gbc=new GridBagConstraints();
btns=new JPanel();                 //JPanel for numbers
operations=new JPanel();           //JPanel for operations
numdisp=new JTextField(15);        //JTextFIeld which displays the number
gbc.gridx=1;
gbc.gridy=1;
window.add(numdisp,gbc);

addbtn();                         //method which defines all the variables

gbc.gridx=1;
gbc.gridy=2;
window.add(btns,gbc);
gbc.gridx=2;
gbc.gridy=2;
window.add(operations,gbc);
btns.setLayout(new GridLayout(4,3,0,0));         //Layout for both JPanel's    
operations.setLayout(new GridLayout(7,1,1,1));

window.pack();
window.setVisible(true);

但这就是结果的样子......

Result

我不明白为什么我的number小组与number display之间存在较大差距。为什么会出现问题?怎么可以解决?

1 个答案:

答案 0 :(得分:-1)

整个窗口也是GridBagLayout。所以你有2x2网格,第一列固定大小为15

numdisp=new JTextField(15)

因此,布局管理器还将数字网格也修复为numdisp的宽度。 如果删除此固定大小,则应调整为数字网格的大小。