SwingでTicker

戻る


import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class DrawingPanel extends JPanel implements Runnable {

    private int i = 0;
    private int mx = 0;
    private int my = 10;
    private String message = "ツリー構造は全ての構造の基本です。。。";

    public DrawingPanel() {

        System.out.println( isDoubleBuffered() );
        setDoubleBuffered( true );
        System.out.println( isDoubleBuffered() );

        Thread thread = new Thread( this );
        thread.start();
    }

    public void run() {
        while ( true ) {
            i++;

            SwingUtilities.invokeLater(
                new Runnable() {
                    public void run() {
                        repaint();
                    }
                }
            );

            try {
                Thread.sleep( 100 );
            } catch ( Exception e ) {
                e.printStackTrace();
            }
        }
    }

    public void paintComponent( Graphics g ) {

        int width = getWidth();
        int height = getHeight();

        // 画面クリア
        g.setColor( Color.black );
        // このコンポーネントのサイズを取得する
        g.fillRect( 0 , 0 , width , height );

        g.setColor( Color.red );
        g.fillRect( ( int ) ( 50 * Math.sin( Math.PI * 0.02 * i ) ) + width / 2 ,
                    ( int ) ( 40 * Math.cos( Math.PI * 0.04 * i ) ) + height / 2 ,
                    40 , 60 );

        g.setColor( Color.white );
        g.drawString( message, mx, my );
        my += 1; // 下に移動させる
        if ( my > height + 20 ) {
            my = -20;
        }
    }


}
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
<pre>
森をシミュレーションするApplet
</pre>
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class ForestApplet extends JApplet {

    public void init() {

        Container contentPane = getContentPane();
        contentPane.setLayout( new FlowLayout() );

        DrawingPanel dp = new DrawingPanel();
        dp.setPreferredSize( new Dimension( 800 , 600 ) );

        contentPane.add( dp );

    }

}


import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
<pre>
森をシミュレーションするSWINGアプリケーション
</pre>
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class ForestJFrame extends JFrame {

    private NavigatorPanel naviPanel = new NavigatorPanel();
    private UpperPanel upperPanel = new UpperPanel();
    private LowerPanel lowerPanel = new LowerPanel();
    private DrawingPanel dp = new DrawingPanel();
    private TickerPanel tickerPanel = new TickerPanel();

    public static void main( String args[] ) {
        new ForestJFrame().setVisible( true );
    }

    public ForestJFrame() {

        // タイトル
        setTitle( "ティッカーのテスト" );
        setDefaultCloseOperation( EXIT_ON_CLOSE );

        // レイアウトマネージャ
        GridBagLayout layout = new GridBagLayout();
        getContentPane().setLayout( layout );

        GridBagConstraints constraints = new GridBagConstraints();
        constraints.insets = new Insets( 5, 5, 5, 5 );

        //----------------------------------------------------
        // ナビゲータ用のパネルを左側に追加
        //----------------------------------------------------
        constraints.gridy = 0;
        constraints.gridx = 0;
        constraints.gridheight = 3;

        layout.setConstraints( naviPanel, constraints );
        this.add( naviPanel );

        //----------------------------------------------------
        // 上部パネルを追加
        //----------------------------------------------------
        constraints.gridx = 1;
        constraints.gridheight = 1;

        layout.setConstraints( upperPanel, constraints );
        this.add( upperPanel );

        ++ constraints.gridy;

        //----------------------------------------------------
        // 描画用パネルを追加
        //----------------------------------------------------
        dp.setPreferredSize( new Dimension( 320 , 400 ) );
        layout.setConstraints( dp, constraints );
        this.add( dp );

        ++ constraints.gridy;

        //----------------------------------------------------
        // ティッカー用パネルを追加
        //----------------------------------------------------
        layout.setConstraints( tickerPanel, constraints );
        this.add( tickerPanel );

        ++ constraints.gridy;

        //----------------------------------------------------
        // 上部パネルを追加
        //----------------------------------------------------
        constraints.gridx = 1;
        constraints.gridheight = 1;

        layout.setConstraints( lowerPanel, constraints );
        this.add( lowerPanel );

        ++ constraints.gridy;

        // サイズを決定
        this.setBounds( 0, 0, 640, 400 );
        this.pack();
    }
}

/**
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/
public interface Growable {
    /** 成長する */
    public void grow();

    /** 子供をもうける */
    public Object beget();
}
import java.util.*;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
<pre>
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
</pre>
@author KISHI Yasuhiro 
*/

public class LowerPanel extends JPanel {

    JButton dummy = new JButton( "LOWER" );

    public LowerPanel() {

        this.add( dummy );

    }
}
import java.util.*;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
<pre>
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
</pre>
@author KISHI Yasuhiro 
*/

public class NavigatorPanel extends JPanel {

    JButton dummy = new JButton( "Navagator" );

    public NavigatorPanel() {

        this.add( dummy );

    }
}
/**
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class TickerModel {

    private String message;
    private String margin;
    private int viewLength;
    private int from;
    private int to;

    private String substr = "";

    public TickerModel( String message, int viewLength ) {
        this.message = "        " + message + "        ";
        this.viewLength = viewLength;
        from = 0;
    }

    public void shift() {

        if ( from >= message.length() ) {
            from = 0;

            doSleep( 2000 );
        }

        int to = from + viewLength;
        if ( to >= message.length() ) {
            to = message.length();
        }
        substr = message.substring( from , to );

        // System.out.println( "[" + subset + "] " + from + "-" + to );

        from++;

    }

    public String getSubstr() {
        return substr;
    }

    private void doSleep( long msec ) {

        try {
            Thread.sleep( msec );
        } catch ( Exception e ) {
            e.printStackTrace();
        }
    }

}
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class TickerPanel extends JPanel implements Runnable {

    private TickerModel tm ;
    private JTextField textField = new JTextField( 45 );

    public TickerPanel() {

        this.add( textField );

        tm = new TickerModel( "インデックスは0から始まり、半角英数字も日本語も一文字は一文字として数えられます。例えば、部分文字列を取得するメソッド、 substring(3,6) では、「四文字目から7文字目まで」を指定したことになります。但し、このとき3文字目は部分文字列に含まれ、7文字目は含まれません。", 45 );

        Thread thread = new Thread( this );
        thread.start();

    }

    public void run() {

        while ( true ) {
            tm.shift();

            textField.setText( tm.getSubstr() );
            try {
                Thread.sleep( 500 );
            } catch ( Exception e ) {}
        }
    }
}
import java.util.*;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
<pre>
$Id: ticker.html,v 1.1 2009/06/22 16:12:30 kishi Exp kishi $
</pre>
@author KISHI Yasuhiro 
*/

public class UpperPanel extends JPanel {

    JButton dummy = new JButton( "UPPER" );

    public UpperPanel() {

        this.add( dummy );

    }
}


戻る

inserted by FC2 system