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();

   }
}
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[javaSwing]
claudebot
24/04/19 07:04:46
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube