前提
Javaの勉強でSwingを使ってボタンの配置場所を変更したいと考えておりますが上手くいかずアドバイスお願いいたします。
実現したいこと
並列に並んでいるボタンの配置場所を上下段に表示させたい。
- 現在、左側に表示されているテキストフィールドを最上位に表示したい。
- 現在、並列に表示されている「上から2列目に表示させたい」ボタンを上から2列目に表示させたい。
該当のソースコード
borderLayoutDemo.java
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5public class DentakuFrame extends JFrame { 6 private static final long serialVersionUID = 1L; 7 8 JPanel contentPane = new JPanel(); 9 10 BorderLayout borderLayout1 = new BorderLayout(); 11 JTextField result = new JTextField(""); 12 double stackedValue = 0.0; 13 boolean isStacked = false; 14 boolean afterCalc = false; 15 String currentOp = ""; 16 17 //フレームのビルド 18 public DentakuFrame() { 19 contentPane.setLayout(borderLayout1); 20 this.setSize(new Dimension(250, 300)); 21 this.setTitle("レイアウト変更"); 22 this.setContentPane(contentPane); 23 24 contentPane.add(result, BorderLayout.NORTH); 25 26 JPanel keyPanel = new JPanel(); 27 JPanel buttonPanel = new JPanel(); 28 JButton button = new JButton(); 29 keyPanel.setLayout(new GridLayout(4, 4)); 30 buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 31 contentPane.add(keyPanel, BorderLayout.CENTER); 32 buttonPanel.add(button); 33 getContentPane().add(buttonPanel, BorderLayout.NORTH); 34 35 keyPanel.add(new NumberButton("ボタン"), 0); 36 keyPanel.add(new NumberButton("ボタン"), 1); 37 keyPanel.add(new NumberButton("ボタン"), 2); 38 keyPanel.add(new CalcButton("ボタン"), 3); 39 keyPanel.add(new NumberButton("ボタン"), 4); 40 keyPanel.add(new NumberButton("ボタン"), 5); 41 keyPanel.add(new NumberButton("ボタン"), 6); 42 keyPanel.add(new CalcButton("ボタン"), 7); 43 keyPanel.add(new NumberButton("ボタン"), 8); 44 keyPanel.add(new NumberButton("ボタン"), 9); 45 keyPanel.add(new NumberButton("ボタン"), 10); 46 keyPanel.add(new CalcButton("ボタン"), 11); 47 keyPanel.add(new NumberButton("ボタン"), 12); 48 keyPanel.add(new NumberButton("ボタン"), 13); 49 keyPanel.add(new CalcButton("ボタン"), 14); 50 keyPanel.add(new CalcButton("ボタン"), 15); 51 buttonPanel.add(new CalcButton("上から2列目に表示させたい")); 52 53 contentPane.add(new ClearButton(), BorderLayout.SOUTH); 54 this.setVisible(true); 55 } 56 57 public void appendResult(String c) { 58 if (!afterCalc) result.setText(result.getText() + c); else { 59 result.setText(c); 60 afterCalc = false; 61 } 62 } 63 64 public class NumberButton extends JButton implements ActionListener { 65 private static final long serialVersionUID = 1L; 66 67 public NumberButton(String keyTop) { 68 super(keyTop); 69 this.addActionListener(this); 70 } 71 72 public void actionPerformed(ActionEvent evt) { 73 String keyNumber = this.getText(); 74 appendResult(keyNumber); 75 } 76 } 77 78 public class CalcButton extends JButton implements ActionListener { 79 private static final long serialVersionUID = 1L; 80 81 public CalcButton(String op) { 82 super(op); 83 this.addActionListener(this); 84 } 85 86 public void actionPerformed(ActionEvent e) { 87 if (isStacked) { 88 double resultValue = (Double.valueOf(result.getText())).doubleValue(); 89 if (currentOp.equals("+")) stackedValue += resultValue; else if ( 90 currentOp.equals("-") 91 ) stackedValue -= resultValue; else if ( 92 currentOp.equals("×") 93 ) stackedValue *= resultValue; else if ( 94 currentOp.equals("÷") 95 ) stackedValue /= resultValue; 96 result.setText(String.valueOf(stackedValue)); 97 } 98 currentOp = this.getText(); 99 stackedValue = (Double.valueOf(result.getText())).doubleValue(); 100 afterCalc = true; 101 if (currentOp.equals("=")) isStacked = false; else isStacked = true; 102 } 103 } 104 105 public class ClearButton extends JButton implements ActionListener { 106 private static final long serialVersionUID = 1L; 107 108 public ClearButton() { 109 super("C"); 110 this.addActionListener(this); 111 } 112 113 public void actionPerformed(ActionEvent evt) { 114 stackedValue = 0.0; 115 afterCalc = false; 116 isStacked = false; 117 result.setText(""); 118 } 119 } 120}
Starter.java
1 2public class Starter { 3 public static void main( String[] args ) { 4 new borderLayoutDemo(); 5 } 6}
回答1件
あなたの回答
tips
プレビュー