絶対配置 (setBounds と null レイアウト) を使用して作業し、レイアウト マネージャーの練習を開始しました。このコードは gridbag レイアウトを使用していますが、表示されないコンポーネントはほとんどありません。セルに何らかの問題があるか、他の何かが助けてください!
java.util.StringTokenizer をインポートします。 import java.awt.event.*; import java.awt.*; import javax.swing.*; class Calculator は JFrame を拡張します { JButton add,sub,mul,div,sin,cos,tan,clear,negate,inverse,zero,one,two,three,four,five,six,seven,eight,nine,equalTo,percentage,sqrt; JTextField 入力; GridBagLayout gbl; private void addComponent(Component component,int gridx, int gridy, int gridwidth, int gridheight,Insets insets) { add(component, new GridBagConstraints(gridx, gridy,gridwidth, gridheight, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0,0)); } 電卓() { //setSize(500,400); setVisible(真); setLayout(gbl=new GridBagLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add= new JButton("+"); sub= new JButton("-"); mul= new JButton("*"); div= 新しい JButton("/"); sin= new JButton("sin"); cos= new JButton("cos"); tan= new JButton("tan"); clear= new JButton("C"); negate= new JButton("neg"); inverse= new JButton("1/x"); zero= 新しい JButton("0"); one= new JButton("1"); two= new JButton("2"); three= new JButton("3"); four= new JButton("4"); 5 = 新しい JButton("5"); six= new JButton("6"); 7 = 新しい JButton("7"); 8 = 新しい JButton("8"); nine= new JButton("9"); equalTo= new JButton("="); パーセンテージ = 新しい JButton("%"); sqrt= new 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(1,3,3,4,3,新しいインセット(4,4,4,4)); パック(); } public static void main(文字列...args) { SwingUtilities.invokeLater(new Runnable() { public void run() { 新しい電卓(); } }); } }