Swingでフォームの内容を送信する
戻る
::::::::::::::
GCPMenuBarAction.java
::::::::::::::
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* $Id: SwingForm.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
*/
public class GCPMenuBarAction extends AbstractAction {
private Object parentObject;
private static String previousCommand = "";
public GCPMenuBarAction() {
super();
}
public void setParentObject( Object parentObject ) {
this.parentObject = parentObject;
System.out.println( parentObject );
}
public void actionPerformed( ActionEvent event ) {
String command = event.getActionCommand();
GCPMain passenger = ( GCPMain ) parentObject;
MainPanel mainPanel = ( MainPanel ) passenger.getMainPanel();
BottomPanel bottomPanel = ( BottomPanel ) passenger.getBottomPanel();
// 実行されたコマンドをダンプします
System.out.println( command );
if ( "EXIT".equals( command ) ) {
System.exit( 0 );
} else {
// 下部パネルにメッセージを表示
bottomPanel.update( command );
}
if ( !command.equals( previousCommand ) ) {
previousCommand = command;
mainPanel.removeAll();
Renderable renderer = RenderingManager.createRenderer( command, mainPanel );
if ( renderer != null ) {
renderer.render();
} else {
System.err.println( "command: " + command + " ⇒ 描画用クラスが設定されていません" );
}
mainPanel.repaint();
}
}
}
::::::::::::::
RenderingManager.java
::::::::::::::
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
$Id: SwingForm.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
@author KISHI Yasuhiro
*/
public class RenderingManager {
static public Renderable createRenderer( String command, JPanel panel ) {
Renderable renderer = null;
/**
if ( type == Node.Type.ROOT ) {
renderer = new TopPageRenderer( node );
} else if ( type == Node.Type.CATEGORY ) {
renderer = new IndexPageRenderer( node );
} else if ( type == Node.Type.LEAF ) {
renderer = new DetailPageRenderer( node );
}
*/
if ( "ITEM_CREATION".equals( command ) ) {
renderer = new ItemCreationRenderer( panel );
}
return renderer;
}
}
::::::::::::::
Renderable.java
::::::::::::::
public interface Renderable {
public void render();
}
::::::::::::::
AbstractRenderer.java
::::::::::::::
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
$Id: SwingForm.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
@author KISHI Yasuhiro
*/
abstract public class AbstractRenderer implements Renderable {
protected JPanel panel;
protected JPanel northPanel;
protected JPanel eastPanel;
protected JPanel southPanel;
protected JPanel westPanel;
protected JPanel centerPanel;
public AbstractRenderer( JPanel panel ) {
this.panel = panel;
panel.setLayout( new BorderLayout() );
northPanel = new JPanel();
eastPanel = new JPanel();
southPanel = new JPanel();
westPanel = new JPanel();
centerPanel = new JPanel();
panel.add( northPanel, BorderLayout.NORTH );
panel.add( eastPanel, BorderLayout.EAST );
panel.add( southPanel, BorderLayout.SOUTH );
panel.add( westPanel, BorderLayout.WEST );
panel.add( centerPanel, BorderLayout.CENTER );
}
/** テンプレートメソッド */
public void render() {
System.out.println( this.getClass().getName() + "クラスがインスタンス化されました。" );
//---------------------------------------
// 実装はサブクラスにて行われる
//---------------------------------------
renderNorthPane();
renderEastPane();
renderSouthPane();
renderWestPane();
renderCenterPane();
}
abstract protected void renderNorthPane();
abstract protected void renderEastPane();
abstract protected void renderSouthPane();
abstract protected void renderWestPane();
abstract protected void renderCenterPane();
}
::::::::::::::
ItemCreationRenderer.java
::::::::::::::
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
$Id: SwingForm.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
@author KISHI Yasuhiro
*/
public class ItemCreationRenderer extends AbstractRenderer {
public ItemCreationRenderer( JPanel panel ) {
super( panel );
}
public void renderNorthPane() {
northPanel.setBackground( Color.cyan );
northPanel.setLayout( new FlowLayout() );
System.out.println( "NORTH" );
JLabel label = new JLabel( "■アイテム登録" );
northPanel.add( label );
}
public void renderEastPane() {}
public void renderSouthPane() {}
public void renderWestPane() {}
public void renderCenterPane() {
centerPanel.setBackground( new Color( 0x9933ff ) );
GridBagLayout layout = new GridBagLayout();
centerPanel.setLayout( layout );
// ラベル
CTUtils.addComponent( centerPanel, layout, new JLabel( "アイテムタイプ(ItemType)" ), 0, 0, 1, 1 );
// コンボボックスで表示するために現在登録されているアイテムタイプの一覧を取得
java.util.List rows = ListDataProvider.provide( "ItemType", "code", "name" );
Object[] name = new Object[ rows.size() ];
for ( int i = 0;i < rows.size(); i++ ) {
Object[] object = ( Object[] ) rows.get( i );
name[ i ] = object[ 1 ];
}
// アイテムタイプ
JComboBox combo = new JComboBox( name );
CTUtils.addComponent( centerPanel, layout, combo, 1, 0, 1, 1 );
// ラベル
JLabel qtyLabel = new JLabel( "数量(QTY)" );
CTUtils.addComponent( centerPanel, layout, qtyLabel, 0, 1, 1, 1 );
// 数量
JTextField qty = new JTextField( 5 );
CTUtils.addComponent( centerPanel, layout, qty, 1, 1, 1, 1 );
// 送信ボタン
JButton submit = new JButton( "送信" );
Action action = new DBAccessAction();
// コンテキストの参照を引き渡す
Object[] context = new Object[ 3 ];
context[ 0 ] = combo;
context[ 1 ] = rows;
context[ 2 ] = qty;
( ( DBAccessAction ) action ).setContext( context );
submit.addActionListener( action );
submit.setActionCommand( "ITEM_CREATION" );
CTUtils.addComponent( centerPanel, layout, submit, 0, 2, 2, 1 );
}
}
::::::::::::::
DBAccessAction.java
::::::::::::::
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* $Id: SwingForm.html,v 1.1 2009/06/22 16:11:58 kishi Exp kishi $
* 各画面にてDBアクセス要求を出すためのアクションインタフェース
* @author KISHI YAsuhiro
*/
public class DBAccessAction extends AbstractAction {
/** ボタンを押したときの状況を取得するための参照 */
Object[] context;
public DBAccessAction() {
super();
}
public void setContext( Object[] context ) {
this.context = context;
}
public void actionPerformed( ActionEvent event ) {
String command = event.getActionCommand();
System.out.println( "command=" + command );
/**
JComponent component = ( JComponent ) event.getSource();
Container parent = component.getParent();
Component[] components = parent.getComponents();
for(int i=0;i<components.length;i++){
System.out.println( components[i]);
}
*/
if ( "ITEM_CREATION".equals( command ) ) {
JComboBox combo = ( JComboBox ) context[ 0 ];
java.util.List rows = ( java.util.List ) context[ 1 ];
JTextField qty = ( JTextField ) context[ 2 ];
int index = combo.getSelectedIndex();
Object[] object = ( Object[] ) rows.get( index );
Integer code = ( Integer ) object[ 0 ];
String name = ( String ) object[ 1 ];
System.out.println( "index=" + index );
System.out.println( "code=" + code + " name=" + name );
System.out.println( "qty=" + qty.getText() );
}
}
}
戻る