JTableの標準化

  更新履歴



▼ 最新版
ブラウザでダウンロード

2009/11/09 : フォーカス処理の為、オーバーロードメソッドと補助メソッドの追加
  
   // ***************************************************
   // 確実な初期編集フォーカス
   // ***************************************************
   public void setCellFocus( int row, String col ){
      setCellFocus( row, GetColumnNo( col ) );
   }
   // ***************************************************
   // カラム番号の取得
   // ***************************************************
   public int GetColumnNo( String name ) {

      // カラム位置を ID から取得
      return (this.getColumn(name)).getModelIndex();

   }
  

2009/11/06 : 入力時の確定処理を追加
  
	// ***************************************************
	// カラム値の取得
	// ***************************************************
	public Object GetColumnText( int nRow, String name ) {

		// 行位置、カラム位置で変更
		this.editCellAt( nRow, -1 );  // 入力の確定に必要
		return this.getValueAt(
			nRow,
			// カラム位置を ID から取得
			(this.getColumn(name)).getModelIndex()
		);

	}
  

2009/11/05
※ セルのテキストフィールドにキーのイベントを取得できるインターフェイスを追加しました

2009/10/21
※ 最初に必要なカラムを全て AddColumn する必要があります( これは仕様です )
※ タブキーでセルを移動時に、JTextField の場合は編集状態になってテキストが選択されます
※ コンボボックスを追加可能です
※ チェックボックスを追加可能です

Jtable_std

  
// *********************************************
// JTable のイベント( ダブルクリック用 )
// *********************************************
lboxTable.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent e) {
      // ダブルクリックの処理
      if ( e.getClickCount() == 2 ) {
         int row = lboxTable.convertRowIndexToModel(
	 lboxTable.rowAtPoint(e.getPoint())
         );
         int col = lboxTable.convertColumnIndexToModel(
	 lboxTable.columnAtPoint(e.getPoint())
         );

         // 列のテキストを取得
         String col_1 = (String)lboxTable.GetColumnText( row, "COLUMN_1" );
         String col_2 = (String)lboxTable.GetColumnText( row, "COLUMN_2" );
         String col_3 = (String)lboxTable.GetColumnText( row, "COLUMN_3" );
         String col_4 = (String)lboxTable.GetColumnText( row, "COLUMN_4" );
         String col_5 = (String)lboxTable.GetColumnText( row, "COLUMN_5" );
         String col_6 = (String)lboxTable.GetColumnText( row, "COLUMN_6" );
         String col_7 = (lboxTable.GetColumnText( row, "COLUMN_7" )).toString();
         System.out.println("dbl:"+row+"/"+col);
         System.out.println(col_1+";"+col_2+";"+col_3+
	 ";"+col_4+";"+col_5+";"+col_6+";"+col_7);

      }
   }
});

lboxTable.setRowHeight( 20 );

// *********************************************
// 列追加( 最初に全て追加しておく必要あり )
// *********************************************
lboxTable.AddColumn("COLUMN_1", true );
lboxTable.AddColumn("COLUMN_2", false );
lboxTable.AddColumn("COLUMN_3", true );
lboxTable.AddColumn("COLUMN_4", true );
lboxTable.AddColumn("COLUMN_5", true );
lboxTable.AddColumn("COLUMN_6", true );
lboxTable.AddColumn("COLUMN_7", true );
// *********************************************
// 列追加( 最初に全て追加しておく必要あり )
// *********************************************


// 1番目のフィールドのイベント( KeyEvent )
lboxTable.setTextField("COLUMN_1",new LboxTable.ActionCellField() {
	// ユーザ定義イベント用インターフェイス( ActionCellField )
	public void param(String type, KeyEvent e, int row,int column) {
		// type : "pressed" または "released"
		// 通常 "pressed" で良いです
		System.out.println(type+"|"+e.getKeyCode()+"|"+row+"|"+column);

		// Enter キーでフォーカス移動
		if ( type.equals( "pressed" ) && e.getKeyCode() == 10 ) {
			lboxTable.setCellFocus(row, "COLUMN_6" );
		}
	}
});
// コンボボックス
lboxTable.setColumnCombo("COLUMN_3", new String[]{"あ", "い", "う"});

// ボタン
lboxTable.setColumnButton("COLUMN_4",new LboxTable.ActionCellButton() {
	// ユーザ定義イベント用インターフェイス( ActionCellButton )
	public void param(int row,int column) {
		System.out.println("btn:"+row+"/"+column);
	}
});

// コンボボックス
lboxTable.setColumnCombo("COLUMN_5", new String[]{"A", "B", "C"});

// イベント処理をしないテキストフィールド
lboxTable.setTextField("COLUMN_6");

// チェックボックス
lboxTable.setCheckBox("COLUMN_7");


// *********************************************
// タイトル
// *********************************************
lboxTable.SetColumnTitle("COLUMN_1", "タイトル");
lboxTable.SetColumnTitle("COLUMN_2", "URL");
lboxTable.SetColumnTitle("COLUMN_3", "コンボ1");
lboxTable.SetColumnTitle("COLUMN_4", "ボタン");
lboxTable.SetColumnTitle("COLUMN_5", "コンボ2");
lboxTable.SetColumnTitle("COLUMN_6", "テキスト");

// *********************************************
// 幅
// *********************************************
lboxTable.SetColumnWidth("COLUMN_1", 150);
lboxTable.SetColumnWidth("COLUMN_2", 320);
lboxTable.SetColumnWidth("COLUMN_3", 60);
lboxTable.SetColumnWidth("COLUMN_4", 100);
lboxTable.SetColumnWidth("COLUMN_5", 60);
lboxTable.SetColumnWidth("COLUMN_6", 50);

lboxTable.setSurrendersFocusOnKeystroke( true );

try {
	// 生のバイトのストリーム
	// ( カレントディレクトリの exlink.xml )
	FileInputStream fis = 
		new FileInputStream(System.getProperty("user.dir")+"\\exlink.xml");

	// XML 取得の準備
	DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
	DocumentBuilder builder = dbfactory.newDocumentBuilder();
	// InputStream から Documentオブジェクトを取得
	Document doc = builder.parse(fis);

	// ここから先は一般的な DOM の処理
	// ルート要素
	Element root = doc.getDocumentElement();
	// System.out.println(root.getNodeName());
	
	// <row> 〜 </row>
	// getElementsByTagName が一番直感的で確実
	NodeList nl1 = root.getElementsByTagName("row");
	// 一つ目のノード
	Node nd1 = nl1.item(0);
	// System.out.println(nd1.getNodeName());
	
	// <fld3>名称</fld3>
	// Node を Element にキャストして getElementsByTagName を使う
	NodeList nl2 = ((Element)nd1).getElementsByTagName("fld3");
	NodeList nl3 = ((Element)nd1).getElementsByTagName("fld2");
	// 最初の row ブロックの fld3 の 列挙
	for( int i = 0; i < nl2.getLength(); i++ ) {

		// <fld3>
		// System.out.println((nl2.item(i)).getNodeName());
		// 要素に挟まれた値は、実際はテキストノードの中にあります
		int nRow = lboxTable.AddRow();
		lboxTable.SetColumnText(nRow, "COLUMN_1",
			(nl2.item(i)).getFirstChild().getNodeValue());
		lboxTable.SetColumnText(nRow, "COLUMN_2", 
			(nl3.item(i)).getFirstChild().getNodeValue());
		lboxTable.SetColumnText(nRow, "COLUMN_3", "あ");
		lboxTable.SetColumnText(nRow, "COLUMN_4", "ボタン"+i);
		lboxTable.SetColumnText(nRow, "COLUMN_5", "B");
		lboxTable.SetColumnText(nRow, "COLUMN_6", "" );
		lboxTable.SetColumnText(nRow, "COLUMN_7", false );

		nRow = lboxTable.AddRow();
		lboxTable.SetColumnText(nRow, "COLUMN_1", 
			(nl2.item(i)).getFirstChild().getNodeValue());
		lboxTable.SetColumnText(nRow, "COLUMN_2", 
			(nl3.item(i)).getFirstChild().getNodeValue());
		lboxTable.SetColumnText(nRow, "COLUMN_3", "う");
		lboxTable.SetColumnText(nRow, "COLUMN_4", "ボタン"+i);
		lboxTable.SetColumnText(nRow, "COLUMN_5", "A");
		lboxTable.SetColumnText(nRow, "COLUMN_6", "" );
		lboxTable.SetColumnText(nRow, "COLUMN_7", false );
	}

	// ファイルを閉じる
	fis.close();

	// 状態表示
	System.out.println("列数:"+lboxTable.getColumnCount());
	System.out.println("行数:"+lboxTable.getRowCount());
	System.out.println("列名1:"+lboxTable.getColumnName(0));
	System.out.println("列名2:"+lboxTable.getColumnName(1));

	// 初期編集フォーカス
	lboxTable.setCellFocus(0,0);

}
catch (Exception e) {
}
  



▼旧版
ブラウザでダウンロード

2009/10/14
   ※ 列毎の編集可、編集不可の設定を可能にしました
   ※ セル内にボタンを設定可能にしました




列処理部分

  
// *********************************************
// 列追加
// *********************************************
lboxTable.AddColumn("COLUMN_1");
lboxTable.AddColumn("COLUMN_2");
// 第一カラムは入力可
lboxTable.setCellEnable("COLUMN_1", true );
// ボタンセル
lboxTable.AddColumnButton("COLUMN_3",new LboxTable.ActionCellButton() {
	public void param(int row,int column) {
		System.out.println("btn:"+row+"/"+column);
	}
});
// イベントを有効にする
lboxTable.setCellEnable("COLUMN_3", true );

// *********************************************
// タイトル
// *********************************************
lboxTable.SetColumnTitle("COLUMN_1", "タイトル");
lboxTable.SetColumnTitle("COLUMN_2", "URL");
lboxTable.SetColumnTitle("COLUMN_3", "処理");

// *********************************************
// 幅
// *********************************************
lboxTable.SetColumnWidth("COLUMN_1", 150);
lboxTable.SetColumnWidth("COLUMN_2", 320);
lboxTable.SetColumnWidth("COLUMN_3", 100);
  




  lightbox.LboxTable ( JTable )



Eclipse の Visual Editor で配置する場合は、レイアウトに null を使用しないで下さい。
一番上の JPanel は、null でもいいですが、その中にさらに JPanel を配置して LboxTable を貼り付けます
( Bean の選択 )

実装サンプル => Java : WEB 上の XML を JTable に表示

  
// ***************************************************
// 確実な初期編集フォーカス
// ***************************************************
public void setCellFocus( int row, String col )
public void setCellFocus( int row, int col )

// ***************************************************
// カラムの編集可/不可の設定
// ***************************************************
public void setCellEnable( int column, boolean flg )
public void setCellEnable( String name, boolean flg )
public boolean isCellEditable(int row, int column)

// ***************************************************
// カラム追加
// ***************************************************
public void AddColumn(String name)
public void AddColumn(String name, boolean flg)

// ***************************************************
// チェックボックスカラムの追加
// ***************************************************
public void setCheckBox(String name)

// ***************************************************
// テキストフィールドカラムの追加
// ***************************************************
public void setTextField(String name)
public void setTextField(String name, final ActionCellField acf)

/*
// イベント実装例
lboxTable.setTextField("COLUMN_1",new LboxTable.ActionCellField() {
	// ユーザ定義イベント用インターフェイス( ActionCellField )
	public void param(String type, KeyEvent e, int row,int column) {
		// type : "pressed" または "released"
		// 通常 "pressed" で良いです
		System.out.println(type+"|"+e.getKeyCode()+"|"+row+"|"+column);

		// Enter キーでフォーカス移動
		if ( type.equals( "pressed" ) && e.getKeyCode() == 10 ) {
			lboxTable.setCellFocus(row, "COLUMN_6" );
		}
	}
});
*/


// ***************************************************
// コンボボックスカラムの追加
// ***************************************************
public void setColumnCombo(String name,String[] items)

// ***************************************************
// ボタンセルカラムの追加
// ***************************************************
public void setColumnButton(String name,ActionCellButton l)

/*
// イベント実装例
lboxTable.setColumnButton("COLUMN_4",new LboxTable.ActionCellButton() {
	// ユーザ定義イベント用インターフェイス( ActionCellButton )
	public void param(int row,int column) {
		System.out.println("btn:"+row+"/"+column);
	}
});
*/

// ***************************************************
// 初期化
// ***************************************************
public void Reset()

// ***************************************************
// データモデル列数取得
// ***************************************************
public int getModelColumnCount()

// ***************************************************
// データモデル行数取得
// ***************************************************
public int getModelRowCount()

// ***************************************************
// 行追加
// ***************************************************
public int AddRow( )

// ***************************************************
// 行を全て削除
// ***************************************************
public void Clear( )

// ***************************************************
// カラム値の取得
// ***************************************************
public Object GetColumnText( int nRow, String name )

// ***************************************************
// カラム番号の取得
// ***************************************************
public int GetColumnNo( String name )

// ***************************************************
// カラム値の変更
// ***************************************************
public void SetColumnText( int nRow, String name, Object value )

// ***************************************************
// カラム幅の変更
// ***************************************************
public void SetColumnWidth( String name, int width )

// ***************************************************
// カラムタイトルの変更
// ***************************************************
public void SetColumnTitle( String name, String value )
  


  
package lightbox;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.text.*;
import java.util.*;
import javax.swing.event.*;
import java.util.Timer;
import java.util.TimerTask;


public class LboxTable extends JTable {

   private static final long serialVersionUID = 1L;
   public JScrollPane root = null;
   public HashMap<Integer,Boolean> cellEditable = new HashMap<Integer,Boolean>();
   private int _row = 0;
   private int _col = 0;

   // ***************************************************
   // コンストラクタ
   // ***************************************************
   public LboxTable () {
      super(0,0);

      // テーブル作成と同時にスクロールを実装する
      this.root = new JScrollPane(this);

      // 必要な時にスクロールバーを表示する
      this.root.setVerticalScrollBarPolicy(
            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
      this.root.setHorizontalScrollBarPolicy(
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
      
   }
   

   // ***************************************************
   // 確実な初期編集フォーカス
   // ***************************************************
   public void setCellFocus( int row, String col ){
      setCellFocus( row, GetColumnNo( col ) );
   }
   public void setCellFocus( int row, int col ){

      this.setRowSelectionInterval(row, row);
      this.setColumnSelectionInterval(col, col);

      Timer t = new Timer();
      _row = row;
      _col = col;
      t.schedule(new TimerTask()
         {
            public void run(){
               if (LboxTable.this.editCellAt(_row,_col) ) {
                  DefaultCellEditor ce = 
                     (DefaultCellEditor)LboxTable.this.getCellEditor(_row,_col);
                  ce.getComponent().requestFocusInWindow();
                  if ( (ce.toString()).indexOf("MyCell") != -1 ) {
                     ((MyCellEditor)ce)._field.selectAll();
                  }
               }
            }
         }
      ,500);
   }


   // ***************************************************
   // TAB キーで次のセルに移動(編集可能の場合は編集状態)
   // ***************************************************
   public void valueChanged( ListSelectionEvent e ){
      int nRow = this.getSelectedRow();
      int nCol = this.getSelectedColumn();
      if ( (nRow != -1) && (nCol != -1) ){
         // System.out.println(this.getCellEditor(nRow,nCol).toString());
         if ( (this.getCellEditor(nRow,nCol).toString()).indexOf("MyCell") != -1 ) {
            this.editCellAt( nRow, nCol );
            ((MyCellEditor)this.getCellEditor(nRow,nCol))._field.selectAll();
         }
      }
      super.valueChanged( e );
   }
   public void columnSelectionChanged( ListSelectionEvent e ){
      int nRow = this.getSelectedRow();
      int nCol = this.getSelectedColumn();
      if ( (nRow != -1) && (nCol != -1) ){
         // System.out.println(this.getCellEditor(nRow,nCol).toString());
         if ( (this.getCellEditor(nRow,nCol).toString()).indexOf("MyCell") != -1 ) {
            this.editCellAt( nRow, nCol );
            ((MyCellEditor)this.getCellEditor(nRow,nCol))._field.selectAll();
         }
      }
      super.columnSelectionChanged( e );
   }


   // ***************************************************
   // カラムの編集可/不可の設定
   // ***************************************************
   public void setCellEnable( int column, boolean flg ) {
      cellEditable.put( column, flg );
   }
   public void setCellEnable( String name, boolean flg ) {
      cellEditable.put( (this.getColumn(name)).getModelIndex(), flg );
   }
   public boolean isCellEditable(int row, int column) {
      return cellEditable.get( column );
   }

   // ***************************************************
   // カラム追加
   // ***************************************************
   public void AddColumn(String name) {

      // まず JTable が直接管理しているカラムを作る。
      TableColumn col = new TableColumn();
      this.addColumn(col);

      // データモデルにも指定した名前(Identifier)で追加する
      ((DefaultTableModel)this.dataModel).addColumn(name);

      // このカラム番号
      int column = this.getModelColumnCount()-1;
      // 編集可・不可フラグをセット( 内部テーブル )
      cellEditable.put( column, false );

   }
   public void AddColumn(String name, boolean flg) {

      // まず JTable が直接管理しているカラムを作る。
      TableColumn col = new TableColumn();
      this.addColumn(col);

      // データモデルにも指定した名前(Identifier)で追加する
      ((DefaultTableModel)this.dataModel).addColumn(name);

      // このカラム番号
      int column = this.getModelColumnCount()-1;
      // 編集可・不可フラグをセット( 内部テーブル )
      cellEditable.put( column, flg );

   }

   // ***************************************************
   // チェックボックスカラムの追加
   // ***************************************************
   public void setCheckBox(String name) {

      int column = (this.getColumn(name)).getModelIndex();
      TableColumn col = this.getColumnModel().getColumn(column);
      JCheckBox checkbox = new JCheckBox();
      col.setCellRenderer(new MyCheckBoxRenderer());
      col.setCellEditor(new MyCheckBoxEditor(checkbox));

   }

   // ***************************************************
   // セル内チェックボックス表示用
   // ***************************************************
   private class MyCheckBoxRenderer extends JCheckBox implements TableCellRenderer {
      public MyCheckBoxRenderer() {
         super();
      }
      public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

         if (value == null) {
            this.setSelected(false);
            return this;
         }

         Boolean val = (Boolean)value;
         this.setSelected(val.booleanValue());

         return this;
      }
   }
   // ***************************************************
   // セル内チェックボックス入力用
   // ***************************************************
   private class MyCheckBoxEditor extends DefaultCellEditor {
      public JCheckBox _checkbox = null;
      public MyCheckBoxEditor(JCheckBox checkbox) {
         super(checkbox);
         _checkbox = checkbox;
      }
   }

   // ***************************************************
   // テキストフィールドカラムの追加
   // ***************************************************
   public void setTextField(String name) {

      int column = (this.getColumn(name)).getModelIndex();
      TableColumn col = this.getColumnModel().getColumn(column);
      JTextField field = new JTextField();
      col.setCellEditor(new MyCellEditor(field));

   }
   public void setTextField(String name, final ActionCellField acf) {

      int column = (this.getColumn(name)).getModelIndex();
      TableColumn col = this.getColumnModel().getColumn(column);
      JTextField field = new JTextField();
      field.addKeyListener(new KeyAdapter() {
         public void keyPressed(KeyEvent e) {
            acf.param(
               "pressed",
               e,
               LboxTable.this.getEditingRow() ,
               LboxTable.this.getEditingColumn() 
            );
         }
         public void keyReleased(KeyEvent e) {
            acf.param(
               "released",
               e,
               LboxTable.this.getEditingRow() ,
               LboxTable.this.getEditingColumn() 
            );
         }
      });
      col.setCellEditor(new MyCellEditor(field));

   }

   // ***************************************************
   // セル内フィールドイベント用インターフェイス
   // ***************************************************
   public interface ActionCellField {
      public void param(String type, KeyEvent ka, int row,int column);
   }

   // ***************************************************
   // セル内テキストフィールド入力用
   // ***************************************************
   private class MyCellEditor extends DefaultCellEditor {
      public JTextField _field = null;
      public MyCellEditor(JTextField field) {
         super(field);
         _field = field;
      }
   }

   // ***************************************************
   // コンボボックスカラムの追加
   // ***************************************************
   public void setColumnCombo(String name,String[] items) {

      int column = (this.getColumn(name)).getModelIndex();
      TableColumn col = this.getColumnModel().getColumn(column);
      JComboBox combo = new JComboBox(items);
      col.setCellRenderer(new MyComboBoxRenderer(items));
      col.setCellEditor(new MyComboBoxEditor(combo));

   }

   // ***************************************************
   // セル内コンボボックス入力用
   // ***************************************************
   private class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
      public MyComboBoxRenderer(String[] items) {
         super(items);
         this.setFont(new java.awt.Font("MS Pゴシック", 0, 12));

      }
   
      public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {

         if (isSelected) {
            setForeground(table.getSelectionForeground());
            super.setBackground(table.getSelectionBackground());
         } else {
            setForeground(table.getForeground());
            setBackground(table.getBackground());
         }

         // Select the current value
         setSelectedItem(value);
         return this;
      }
   }
   
   // ***************************************************
   // セル内コンボボックス表示用
   // ***************************************************
   private class MyComboBoxEditor extends DefaultCellEditor {
      public JComboBox _combo = null;
      public MyComboBoxEditor(JComboBox combo ) {
         super(combo);
         combo.setFont(new java.awt.Font("MS Pゴシック", 0, 12));
         _combo = combo;
      }
   }


   // ***************************************************
   // ボタンセルカラムの追加
   // ***************************************************
   public void setColumnButton(String name,ActionCellButton l) {

      int column = (this.getColumn(name)).getModelIndex();

      TableColumn col = this.getColumnModel().getColumn(column);
      col.setCellRenderer(new MyButtonRenderer());
      col.setCellEditor(new MyButtonEditor(new JCheckBox(),l));

   }

   // ***************************************************
   // セル内ボタンイベント用インターフェイス
   // ***************************************************
   public interface ActionCellButton {
      public void param(int row,int column);
   }
   
   // ***************************************************
   // セル内ボタン入力用
   // ***************************************************
   private class MyButtonEditor extends DefaultCellEditor {
      private JButton button;
      private String label;
      private boolean   isPushed;
      private int _row = 0;
      private int _column = 0;
      private ActionCellButton actionCellButton = null; 
      public MyButtonEditor(JCheckBox checkBox,ActionCellButton l) {
         // チェックボックスで代替
         super(checkBox);
         // インターフェイス
         actionCellButton = l;
         // 処理用のボタンを保持
         button = new JButton();
         button.setFont(new java.awt.Font("MS Pゴシック", 0, 12));
         // ボタンのイベントを引数から構築
         button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               // デフォルトの処理を中止
               MyButtonEditor.super.fireEditingStopped();
               // 外側の処理を呼び出し
               actionCellButton.param(_row,_column);
            }
         });
      }

      public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column) {
         // 値を文字列として取得
         label = (value == null) ? "" : value.toString();
         // ボタンにセット
         button.setText( label );
         // 行と列の情報を保存
         _row = row;
         _column = column;

         // 仕様どおりに戻す
         return button;
      }
      public Object getCellEditorValue() {
         // 仕様どおりに戻す
         return new String( label );
      }
   }

   // ***************************************************
   // セル内ボタン表示用
   // ***************************************************
   private class MyButtonRenderer extends JButton implements TableCellRenderer {
      public MyButtonRenderer() {
         super();
         this.setFont(new java.awt.Font("MS Pゴシック", 0, 12));
      }
      public Component getTableCellRendererComponent(JTable table, Object value,
         boolean isSelected, boolean hasFocus, int row, int column) {

         this.setText((value == null) ? "" : value.toString());
         return this;
      }
   }

   // ***************************************************
   // 初期化
   // ***************************************************
   public void Reset() {
      
      this.Clear();
      
      int cols = this.getColumnCount();

      for( int i = cols-1; i >= 0; i-- ) {
         this.removeColumn((this.getColumnModel()).getColumn(i));
      }

      // データモデルも初期化
      ((DefaultTableModel)this.dataModel).setColumnCount(0);

   }

   // ***************************************************
   // データモデル列数取得
   // ***************************************************
   public int getModelColumnCount() {
      
      // データモデルより取得
      return ((DefaultTableModel)this.dataModel).getColumnCount();

   }
   // ***************************************************
   // データモデル行数取得
   // ***************************************************
   public int getModelRowCount() {
      
      // データモデルより取得
      return ((DefaultTableModel)this.dataModel).getRowCount();

   }

   // ***************************************************
   // 行追加
   // ***************************************************
   public int AddRow( ) {

      // 追加は空で良い
      Object obj [] = null;

      // データモデルに追加
      ((DefaultTableModel)this.dataModel).addRow(obj);
      
      // 追加された行番号を返す
      return this.getModelRowCount()-1;

   }

   // ***************************************************
   // 行を全て削除
   // ***************************************************
   public void Clear( ) {

      ((DefaultTableModel)this.dataModel).setRowCount(0);

   }

   // ***************************************************
   // カラム値の取得
   // ***************************************************
   public Object GetColumnText( int nRow, String name ) {

      // 行位置、カラム位置で変更
      this.editCellAt( nRow, -1 );  // 入力の確定に必要
      return this.getValueAt(
         nRow,
         // カラム位置を ID から取得
         (this.getColumn(name)).getModelIndex()
      );

   }
   // ***************************************************
   // カラム番号の取得
   // ***************************************************
   public int GetColumnNo( String name ) {

      // カラム位置を ID から取得
      return (this.getColumn(name)).getModelIndex();

   }
   // ***************************************************
   // カラム値の変更
   // ***************************************************
   public void SetColumnText( int nRow, String name, Object value ) {

      // 行位置、カラム位置で変更
      this.setValueAt(
         value,
         nRow,
         // カラム位置を ID から取得
         (this.getColumn(name)).getModelIndex()
      );

   }

   // ***************************************************
   // カラム幅の変更
   // ***************************************************
   public void SetColumnWidth( String name, int width ) {

      // 自動調整だと、変更しても反映されないので
      this.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );

      TableColumn tc = this.getColumn(name);
      tc.setPreferredWidth(width);

   }

   // ***************************************************
   // カラムタイトルの変更
   // ***************************************************
   public void SetColumnTitle( String name, String value ) {

      TableColumn tc = this.getColumn(name);
      // ヘッダをまず最初に変更
      tc.setHeaderValue(value);
      // ID が変更されてしまうので戻す
      tc.setIdentifier(name);

      // 再表示が必要
      this.tableHeader.resizeAndRepaint();

   }
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ