我使用绝对定位(setBounds 和 null 布局),现在开始练习布局管理器,此代码使用 gridbag 布局,但没有显示一些组件,要么单元格有问题,要么有其他问题,请帮忙!
导入 java.util.StringTokenizer;
导入 java.awt.event.*;
导入 java.awt.*;
导入 javax.swing.*;
类计算器扩展了 JFrame
{
JButton add,sub,mul,div,sin,cos,tan,clear,negate,inverse,zero,一,二,三,四,五,六,七,八,九,equalTo,percentage,sqrt;
JTextField 输入;
GridBagLayout gbl;
private void addComponent(组件组件,int gridx,int gridy,int gridwidth,int gridheight,Insets insets)
{
添加(组件,新 GridBagConstraints(gridx,gridy,gridwidth,gridheight,1.0,1.0,GridBagConstraints.CENTER,GridBagConstraints.BOTH,插图,0,0));
}
计算器()
{
//setSize(500,400);
设置可见(真);
setLayout(gbl=new GridBagLayout());
设置默认关闭操作(JFrame.EXIT_ON_CLOSE);
添加=新的JButton(“+”);
子=新的JButton(“-”);
mul=new JButton("*");
div = new JButton("/");
罪=新的JButton(“罪”);
cos= 新的 JButton("cos");
tan=new JButton("tan");
清除=新的 JButton("C");
否定=新的JButton(“否定”);
逆=新的JButton(“1/x”);
零=新的JButton(“0”);
一=新的JButton(“1”);
二=新的JButton(“2”);
三=新的JButton(“3”);
四=新的JButton(“4”);
五=新的JButton(“5”);
六=新的JButton(“6”);
七=新的JButton(“7”);
八 = 新的 JButton("8");
九=新的JButton(“9”);
equalTo= 新 JButton("=");
百分比=新的 JButton("%");
sqrt=新的 JButton("sqrt");
输入 = 新的 JTextField(20);
addComponent(input,0,0,0,1,new Insets(10,10,100,4)); //tldr
addComponent(add,0,1,1,1,new Insets(4,4,4,4));
addComponent(sub,1,1,2,1,new Insets(4,4,4,4));
addComponent(mul,2,1,3,1,new Insets(4,4,4,4)); // 这个不显示
addComponent(div,3,1,4,1,new Insets(4,4,4,4));
addComponent(sin,0,2,1,2,new Insets(4,4,4,4));
addComponent(cos,1,2,2,2,new Insets(4,4,4,4));
addComponent(tan,2,2,3,2,new Insets(4,4,4,4)); // 这个不显示
addComponent(clear,3,2,4,2,new Insets(4,4,4,4));
addComponent(negate,0,3,1,3,new Insets(4,4,4,4)); // 这4个不可见
addComponent(inverse,1,3,2,3,new Insets(4,4,4,4));
addComponent(zero,2,3,3,3,new Insets(4,4,4,4));
addComponent(one,3,3,4,3,new Insets(4,4,4,4));
盒();
}
公共静态无效主要(字符串...参数)
{
SwingUtilities.invokeLater(new Runnable()
{
公共无效运行()
{
新计算器();
}
});
}
}
