そろそろアプリを作ろうと思う。
やっぱりアプリと言ったらGUIにしないといけないよな。
ってことで、Swingをちょっと勉強しないと
とりあえず、Java+SwingでGUIアプリを作るためのテンプレート(GridLayoutレイアウト編)という記事を参考に作ったのがこれです。
そして、そのプログラムがこちらです。
import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class SwingTest extends JFrame implements ActionListener { /** コンポーネントの宣言 */ private JPanel panel1; private JTextArea textArea1; private JButton button1; private JPanel panel2; private JTextArea textArea2; private JPanel panel3; private JButton button31; private JButton button32; private JButton button33; private String putdata; /** コンポーネントのサイズ */ // frameの高さと幅のサイズ private static final int FRAME_HEIGHT = 350; private static final int FRAME_WIDTH = 310; // containerの高さと幅のサイズ private static final int CONTAINER_HEIGHT = 350; private static final int CONTAINER_WIDTH = 310; // panel1の高さと幅のサイズ private static final int PANEL1_HEIGHT = 30; private static final int PANEL1_WIDTH = 300; // panel2の高さと幅のサイズ private static final int PANEL2_HEIGHT = 250; private static final int PANEL2_WIDTH = 300; public static void main(String[] args) { SwingTest test = new SwingTest(); } public SwingTest() { setTitle("sample");// タイトル setBounds(0, 0, FRAME_WIDTH, FRAME_HEIGHT);// Windowの大きさ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// フレームを閉じたときプログラムを終了 try {// 外観をWindows風に設定 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { e.printStackTrace(); } // Containerを生成(nullLayout) Container container = getContentPane(); container.setLayout(null); container.setBounds(0, 0, CONTAINER_WIDTH, CONTAINER_HEIGHT); panel1 = new JPanel(new GridLayout(1, 2)); panel1.setBounds(0, 0, PANEL1_WIDTH, PANEL1_HEIGHT); textArea1 = new JTextArea(); button1 = new JButton("Put"); textArea1.setBounds(panel1.getVisibleRect()); // textAreaをpanel1の位置と大きさに適合させる textArea1.setLineWrap(true); // テキストエリアの幅で文字列を折り返す panel1.add(new JScrollPane(textArea1)); panel1.add(button1); button1.addActionListener(this); // TextArea用のPanel panel2 = new JPanel(new GridLayout(1, 1)); panel2.setBounds(0, PANEL1_HEIGHT, PANEL2_WIDTH, PANEL2_HEIGHT); textArea2 = new JTextArea(); textArea2.setBounds(panel2.getVisibleRect()); textArea2.setLineWrap(true); panel2.add(new JScrollPane(textArea2)); // Button用のPanel panel3 = new JPanel(new GridLayout(1, 3)); panel3.setBounds(0, PANEL2_HEIGHT + PANEL1_HEIGHT, PANEL1_WIDTH, PANEL1_HEIGHT); button31 = new JButton("Get"); button32 = new JButton("button2"); button33 = new JButton("button3"); panel3.add(button31); panel3.add(button32); panel3.add(button33); // ボタンにアクションリスナーを付加 button31.addActionListener(this); button32.addActionListener(this); button33.addActionListener(this); // containerにパネルを追加 container.add(panel1); container.add(panel2); container.add(panel3); setVisible(true); // ウインドウを見えるようにする } public void actionPerformed(ActionEvent ae) { if (ae.getSource() == button1) { putdata = textArea1.getText(); } else if (ae.getSource() == button31) { textArea2.setText(putdata); } else if (ae.getSource() == button32) { textArea2.setText("button2が押されました。"); } else if (ae.getSource() == button33) { textArea2.setText("button3が押されました。"); } } }若干パクリ臭がするけどいいよね。よくなかったらごめんなさい。
参考文献
Java+SwingでGUIアプリを作るためのテンプレート(GridLayoutレイアウト編)
0 件のコメント:
コメントを投稿