Hello Swing !!

スクロールバーがついたテキストエリア

2004/7/26


テキストエリアを見るとテキストの一部が表示できていないことに気がついた。
スクロールバーがついたテキストエリアをつくることにしよう。

  1. 修正個所はすべてFrame1.javaだけになる。
    //import javax.swing.JFrame;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    /*
     * 作成日: 2004/07/16
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    
    /**
     * @author j00300
     *
     * この生成されたコメントの挿入されるテンプレートを変更するため
     * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
     */
    public class Frame1 extends JFrame {
            JPanel contentPane;
            JLabel jLabel1 = new JLabel() ;
            JButton jButton1 = new JButton() ;
            
            public Frame1(){
                    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
                    try{
                            jInit() ;
                    }
                    catch(Exception e){
                            e.printStackTrace();
                    }
            }
            
    
          
            private void jInit(){
                    //Frameをつくる
                    contentPane = (JPanel) this.getContentPane();
                    this.setSize(400,300);
                    this.setTitle("Hello Swing");
                    contentPane.setLayout(null);
                    
                    //JLabelをつかう
                    jLabel1.setText("Label1");
                    jLabel1.setBounds(20,20,120,30);
                    jLabel1.setForeground(Color.GREEN);
                    jLabel1.setBackground(new Color(128,0,128));
                    jLabel1.setOpaque(true);
                    contentPane.add(jLabel1);
                    
                    //JButtonをつかう
                    jButton1.setText("Touch Me!!");
                    jButton1.setBounds(20,60,120,30);
                    
                    //JTextFieldをつかう
                    jTextField1.setText("TextField");
                    jTextField1.setBounds(20,100,120,30);
                    contentPane.add(jTextField1);
    
                    //JTextAreaをつかう
                    jTextArea1.setText("TextArea\n2nd Line");
                    jTextArea1.append("\n3rd Line");
                    jTextArea1.append("\nAnd 4th Line");
                    jTextArea1.append("\nThis is the LAST Line.");
                    jTextArea1.setBounds(20,140,120,30);
                    contentPane.add(jTextArea1);
    
                    // ScrollBarつきTextArea
                    JTextArea jTextArea2 = new JTextArea() ;
                    jTextArea2.setText(jTextArea1.getText()); 
    
                    jScrollPane1.getViewport().add(jTextArea2);
                    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    //              上の1行は、下このように1行にまとめることもできる
    //              jScrollPane1 = new JScrollPane(jTextArea2, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    jScrollPane1.setBounds(20,180,120,50);
                    contentPane.add(jScrollPane1);
    
                    // ScrollBarつきTextArea
                    JTextArea jTextArea2 = new JTextArea() ;
                    jTextArea2.setText(jTextArea1.getText()); 
    
                    jScrollPane1.getViewport().add(jTextArea2);
                    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    //              上の1行は、下このように1行にまとめることもできる
    //              jScrollPane1 = new JScrollPane(jTextArea2, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    jScrollPane1.setBounds(20,180,120,50);
                    contentPane.add(jScrollPane1);
    
                    contentPane.add(jButton1);
    
                    //最後にFrame全体を表示
                    this.setVisible(true);
            }
    }

  2. これで実行ボタンを押すと、スクロールバーがついたテキストエリアが表示される。
    バーを動かすと隠れていたテキストを見ることができる。

  3. ただ表示するだけでは飽きてきた。今度は、ボタンを押したときの動作を作ってみよう。
    次はボタンを押したときの動作をイベントの処理(Buttonを押したら・・・)として追加する。

テキストフィールドとテキストエリア(JTextField & JTextArea) イベントの処理(Buttonを押したら・・・)