Swing/AddRow のバックアップの現在との差分(No.14)
TITLE:JTableの行を追加、削除
Posted by terai at 2004-06-04
JTableの行を追加、削除
JTableで行の追加と削除を行います。- category: swing folder: AddRow title: JTableの行を追加、削除 tags: [JTable, JPopupMenu] author: aterai pubdate: 2004-05-03T19:35:45+09:00 description: JTableへの行追加と、選択行の削除をJPopupMenuから実行します。 image:
概要
JTable
への行追加と、選択行の削除をJPopupMenu
から実行します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spandel
public class TestModel extends DefaultTableModel {
#spanend
public void addTest(Test tst) {
Object[] obj = {Integer.valueOf(number), tst.getName(), tst.getComment()};
super.addRow(obj);
number++;
//fireTableDataChanged();
}
#spandel
//......
#spanend
#spandel
#spanend
#spandel
private final TestModel model = new TestModel();
#spanend
#spandel
private final TableSorter sorter;
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
private final DefaultTableModel model = new DefaultTableModel();
#spanend
private final JTable table;
#spandel
private void testCreateActionPerformed(ActionEvent e) {
#spanend
model.addTest(new Test("新規の名前", ""));
//追加された最終行までスクロール
Rectangle rect = table.getCellRect(model.getRowCount()-1,0,true);
table.scrollRectToVisible(rect);
//table.repaint();
#spanadd
#spanend
#spanadd
private void createActionPerformed(ActionEvent e) {
#spanend
int rc = model.getRowCount();
model.addRow(new Object[] {rc, "New name", ""});
// 追加された最終行までスクロール
table.scrollRectToVisible(table.getCellRect(rc, 0, true));
}
#spandel
private void deleteActionPerformed(ActionEvent evt) {
#spanend
#spanadd
#spanend
#spanadd
private void deleteActionPerformed(ActionEvent e) {
#spanend
int[] selection = table.getSelectedRows();
if(selection==null || selection.length<=0) return;
for(int i=selection.length-1;i>=0;i--) {
model.removeRow(sorter.modelIndex(selection[i]));
for (int i = selection.length - 1; i >= 0; i--) {
model.removeRow(table.convertRowIndexToModel(selection[i]));
}
//table.repaint();
}
#spandel
//......
#spanend
解説
上記のサンプルでは、ポップアップメニューを使って、行の追加と削除を行っています。解説
上記のサンプルでは、ポップアップメニューを使用して行の追加と削除を行っています。- 追加
- DefaultTableModelのaddRowメソッドを使用し、オブジェクトの配列を行として追加しています。
- 追加された行が表示されるように、getCellRectで行の領域を取得し、scrollRectToVisibleでそこまでスクロールさせています。
- 追加
-
DefaultTableModel
のaddRow
メソッドを使用しオブジェクトの配列を行として追加 - 追加された行が表示されるように
JTable#getCellRect(...)
で行の領域を取得しJTable#scrollRectToVisible(...)
でスクロール
-
- 削除
- 複数行の削除に対応するために、indexの大きい方からremoveRowメソッドを使用しています。
- 行のソートを行っている場合は、TableSorterのmodelIndexメソッドを挟む必要があります。
- 複数行の削除に対応するため
index
の大きい方から削除する - 行がソートされている場合を考慮して
JTable#convertRowIndexToModel(int)
メソッドでviewIndex
をmodelIndex
に変換してからDefaultTableModel#removeRow(int modelIndex)
を使って削除
#spanend
#spandel
//model.removeRow(sorter.modelIndex(selection[i]));
#spanend
#spandel
model.removeRow(table.convertRowIndexToModel(selection[i]));
#spanend
#spandel
参考リンク
参考リンク
コメント
- ãã®éãä¿å¤ªéã®è©©ãã http://www.stlouisbusinesslist.com/business/5021837.htm?info=viagra viagra 袣袵袢 -- viagra?