package jp.gr.java_conf.skrb.logging; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class FavoriteNumber { private JTextField field; private int favorite; public FavoriteNumber() {} public void init() { // フレームの生成 JFrame frame = new JFrame("Favorite Number"); frame.setBounds(100, 100, 300, 80); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println("JFrame@" + Integer.toHexString(frame.hashCode()) + " is created."); Container pane = frame.getContentPane(); pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS)); // テキストフィールドの設定 field = new JTextField(10); field.setBorder(new TitledBorder("Your Favorite Number")); pane.add(field); System.out.println("JTextField@" + Integer.toHexString(field.hashCode()) + " is created."); pane.add(Box.createHorizontalStrut(20)); // 決定ボタンの設定 JButton button = new JButton("決定"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ updateNumber(); } }); pane.add(button); System.out.println("JButton@" + Integer.toHexString(button.hashCode()) + " is created."); frame.setVisible(true); System.out.println("JFrame@" + Integer.toHexString(frame.hashCode()) + " shows."); } // 決定ボタンがクリックされたときのイベント処理 // テキストフィールドから文字を取り出し、数字に変化してから、コンソールに出力する private void updateNumber() { System.out.println("updateNumber is called."); try { favorite = Integer.parseInt(field.getText()); System.out.println("Your Favorite Number is " + favorite); } catch (NumberFormatException ex) { System.out.println("Non-number:[" + field.getText() + "] was inputted." ); } finally { field.setText(""); System.out.println("updateNumber is done."); } } public static void main(String[] args) { new FavoriteNumber().init(); } }