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 );
}
}
戻る