• 締切済み

JTable TableChangedメソッド

度々度々申し訳ないです ファイルの情報(ファイル名、更新日時、パスなど)が入ったArrayListの情報をJTableに出力?したいのですが、だんだんArrayListの要素数(ファイルの数)そふやしていくのでその都度JTableを更新したいです。 前別の質問で答えてくれた方はfire~というメソッド(fireModelChangedメソッドと勝手に判断)を使って、更新しなければいけないと言っていたのですが、使い方がいまいちわかりません。 fireTableChangedとtableChangedの関係というか,それが何なのかさえわかりません。調べ方が悪いのか...... よければそこら辺教えてください。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

fire~というメソッド といったのは、いくつか種類があり、それぞれ状況によって使い分ける必要があるためです。 いまはちょっと資料が見れないので詳細には記述できませんが、 ・テーブルの構造そのものが変わった場合 ・行が増えたり減ったりした場合 ・特定のセルの表示内容に変更があった場合 など、状況による使い分けが必要です。 適切なものを使わないと、更新が反映されなかったり、 画面がちらついたり、選択範囲かがリセットされたり などの弊害がでてきます。 まあ、細かいことを気にしなければ、テーブル構造の変化の通知をすれば、 とりあえず内容は反映されます。 それと根本的な話ですが、これらのメソッドは、イベントを発生させるものです。 例えば、ボタンを押したときの動作でActionListenerをボタンに登録し、 actionPerformedを実装し、ボタンをが押されたことを知らされますが、 これと同じようなことが起こっています。 JTableがTableModelに対しリスナー登録を行い、 TableModelがイベントをJTableに通知しています。

domybestatall
質問者

補足

addTableModelListenerできるのはTableModelに対してで TableModelListenerをimplementsするのもTableModelで....... こんがらがってしまうのです(TдT) ActionListenerはちゃんと別のクラスにListenerをimplementsしてできたんですが。。。。 ~JTableのインスタンスを生成したクラス~ table.getModel().addTableModelListener(); ~別のクラス~ public class TableModel extends AbstractTableModel implements TableModelListener{ //いろいろ @Override public void tableChanged(TableModelEvent e) { //ここに書いた処理が更新時に行われる } } (ここまでがあってるのかわかりませんが)ここまでは来るのですが、更新のGOサインをだれが出すのかがよくわかんなくて(ここでfire~??)、今作っているプログラムではドラッグされた時に更新したいんです。 ただfireTableChangedをドラッグの処理のところに貼るんじゃもちろんダメなんでしょうけど(TдT) ここまで教えてもらっているのにわがままというか、自分の理解力が至らないばかりに何度も申し訳ないですm(_ _)m

関連するQ&A

  • JTable ArrayList 表示されない

    度々質問させて頂いてます。 Jtableでファイルのリストを表示させたいのですが、アプリ外(Windowsのエクスプローラ)からのD&Dしてきたファイルを、最初に要素のない状態で定義したArrayList型の変数?にいれる(addする)ので、はじめはArrayList型変数には知らない(意味を持たない)値が入っているか、JTableが、表示する範囲の要素がなくて困ってしまっているはずです。たぶんそのせいでJTableに表示されないんだと思います。(妄想です) nullで初期化しようとも考えたのですがそうするとaddが使えなくなってしまい(nullが入っているところの後ろからaddされる)、同じ班の人が作ってくれたクラスを手直し?しなくてはなりません。 どうすればいいでしょう。 ちょっと日本語がイカれてますができれば助けて欲しいです。 補足ならいくらでもします。 //TableModelクラス public class TableModel extends AbstractTableModel{ public static DataList mainList = new DataList(); TableModel(){ } @Override public int getColumnCount() { return 4; } @Override public int getRowCount() { return 1; } @Override public String getValueAt(int row, int column) { String fileName = mainList.GetData(row).GetName(); String lastModifiedDate = mainList.GetData(row).GetDate().toString(); String filePath = mainList.GetData(row).GetPath(); switch(column){ case 0: return null; case 1: return fileName; case 2: return lastModifiedDate; case 3: return filePath; default: return null; } } public String getColumnName(int column){ switch(column){ case 0: return null; case 1: return "ファイル名"; case 2: return "更新日時"; case 3: return "パス"; default: return null; } } } //DataListクラス public class DataList{ List<FileData> dataList; public DataList(){ this.dataList = new ArrayList<FileData>(); } // 末尾にデータを追加 public void AddData(FileData fd){ this.dataList.add(fd); } } FileDataクラスは単純にファイル名、パス、更新日時(Date型)を持つクラスです rowが1なのはいろいろ試したからで、実際は30行くらい表示していたいです。

    • ベストアンサー
    • Java
  • Eclipseでメソッド一覧をファイル出力したい

    Eclipseでメソッド一覧をファイル出力したいのですが、 何かそのような機能はあったりしますでしょうか? 最終目的は、 メソッド別のステップ数を一覧化したいのです。 (色んなプロジェクトで、責任者から  メソッド単位でテストケース数を提示するよう言われることがあり、  それを記載するとき、手始めとして、クラス一覧・メソッド一覧をファイル出力したいのです。)

    • ベストアンサー
    • Java
  • 実行のされたクラスのメソッド

    OpenPNE(SNSオープンソース)のようなファイル数の多いアプリケーションは、 カスタマイズするにもファイル数が多すぎてどのファイルをいじれば良いのかわからず 動作解析に最も苦戦してしまいます… まず、カスタマイズしたいページをブラウザから表示したときに、このページが表示されるにあたって、このクラスのこのメソッドが実行された、等の情報がわかるとだいぶ助かるのですが、 実行された全てのメソッドをログに記録するか画面に表示することで、カスタマイズするべきファイルを把握したいのですが、どのような方法がありますでしょうか? ご教示頂けると幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • XmlDocument.ReadNode メソッドについて

    XmlDocument.ReadNode()メソッドについて質問があります。 現在、VisualStudio2003のVisual C#で、XMLファイルを読み込むアプリケーションを作っています。その際、XmlTextReaderで、あるファイルを読み込み、XmlDocument.ReadNode()で要素を読み込もうとすると、「インデックスが配列の境界外です。」というIndexOutOfExceptionが発生します。 読み込もうとしているファイルは約2GBで、ReadNode()で読み込まれる要素の数は約80,0000個です。 ここで質問なのですが、ReadNode()には、扱えるファイルサイズの上限のようなものがあるのでしょうか、それとも読み込める要素の数に上限があるのでしょうか。 プログラム例: //"input.xml"は、サイズが約2GBで、Elementの数が約80,0000 XmlTextReader reader = new XmlTextReader("input.xml"); reader->MoveToContent(); XmlDocument xml = new XmlDocument(); //ここ↓のWhileを約80,0000回ループすると75,0000回あたり //でIndexOutOfRangeExceptionがReadNode()からスローされる while (reader.MoveToNextAttribute()) { try { XmlNode a = doc.ReadNode(reader); } catch(Exception e) { //ここで「インデックスが配列の境界外です。」をキャッチ } }

    • ベストアンサー
    • XML
  • 3回ごとに出力

    3回ごとに特定の処理(3要素ずつファイルに出力)を行いたいと思っています。 そのためにはif(j%3 == 0) という判定を入れればよいと思いますが 余りの部分に対しても処理を行うにはどうすればよいでしょうか。 例えば下記のarray(ArrayListのオブジェクト)が10個の要素を持っていたとして 3回ずつファイルを出力したとすると要素が1個あまると思うのですが 10番目の要素も出力したいと思っています。 int j =1; for(int i=0;array.size();i++) { if(j%3 == 0) {     } j++; }

    • ベストアンサー
    • Java
  • mainメソッドの持つクラス名を取得するには

    サーブレットが実行された場合そのサーブレット名(getServletNameを使用して)を取得してテキストファイル出力するようにしております。 これをmainメソッドの持つクラス名(実行クラス名)を取得しようとgetClass()やgetName()を使ってやると”staticなメソッドは使用できません"となりコンパイルが通りません。 サーブレットのように実行クラス名を取得するのはmainメソッドの持つクラスの場合無理なんでしょうか?  Javaの初心者なもので情報が少なければ要望していただければご提供しますのでご教授願います。 ちなみに出力する際はFileWriterやRandomAccessFileを使っております。よろしくお願いします。

    • ベストアンサー
    • Java
  • Access VBA Excel エクスポート

    Access VBAにてExcel エクスポートの処理を記述しました。 現在の記述だと、出力対象のテーブル(クエリ)ごとに1つのファイルとなっており、ファイルの管理が大変なため、1つのExcelファイルで、複数シートに出力したいのですが、どこを修正すればよろしいでしょうか? ’出力対象のクエリ名が入っている配列の要素数(出力対象のクエリ数)を取得する j = UBound(QName) ’出力するクエリの分だけ繰り返す For i = 0 To j   ’同じファイル名のExcelファイルが見つかった場合 If Dir(Path & EName(i)) <> "" Then 'データ更新のため、見つかったファイルを削除する Kill Path & EName(i) End If   ’出力対象のクエリにデータ(レコード)が存在する場合 If Count(i) > 0 Then 'Excelファイルを再度作成する   ’Qname(i)が出力するクエリ名、Pathが出力先のパス、Ename(i)が出力ファイル名です。 DoCmd.TransferSpreadsheet acExport, 10, QName(i), Path & EName(i), True, "" End If End If Next

  • C#でインターネット一時ファイルの全ファイル情報を取得

    C#でインターネット一時ファイルの全ファイル情報を取得したいのですが、 そのようなメソッドはあるのでしょうか? ディレクトリのパスを取得するメソッドはありますが、 ファイルのパスを取得するのはみあたりません。 最終的にインターネット一時ファイルをコピーしたいので。

  • 【sendkeysメソッドが動かずに苦慮しております】

    【sendkeysメソッドが動かずに苦慮しております】 OS:2000 Excel:2003 VB:6.5 こんにちは。 sendkeysメソッドが動かずに苦慮しております。 ネットでいろいろ調べてみましたが、やはり正常に動かすのは難しい様です。 実際、何をしたいのかと言うとプリンターの出力時の設定を変更したいと思っております。 会社のプリンターですが方針でデフォルトが「両面」「2分割」で設定されております。 ただ複数ファイルの跨ったプレゼン資料などを大量に出力する際は「片面」「分割なし」 で設定を変更してプリントアウトしたいと思っており、いろいろ調べた結果Sendkeysを 使うことにいたしました。 ただ、先に申し上げた通りsendkeysメソッドが動かず悩んでおります。 素人の不躾けなご質問で大変申し訳ありませんが、解決できる方法をご存知の方ご教授ください。 sendkeysメソッドを使わない方法でも問題ありません。 以下、ダイアログを表示させ、タブを移動させるまでのコードです。 それではどうぞよろしくお願いいたします。 Sub AAA() Dim FOS As FileSystemObject Dim FolderC As Folder Dim FilesC As Files Dim FileC As File Dim FileName, Path_Name As String Set FOS = CreateObject("scripting.filesystemobject") Set FolderC = FOS.GetFolder("C:\Documents and Settings\AAAAA\デスクトップ\TEST") Set FilesC = FolderC.Files Path_Name = "C:\Documents and Settings\AAAAA\デスクトップ\TEST\" For Each FileC In FilesC FileName = FileC.Name Workbooks.Open FileName:=Path_Name & FileName ActiveWorkbook.Worksheets(1).Select With Application .SendKeys "^{P}", True .SendKeys "%r", True .SendKeys "^{tab}", True .SendKeys "{tab 3}", True End With ActiveWorkbook.Close False Next Set FOS = Nothing End Sub

  • Struts:可変個数のテキストボックスの値を取得したい

    お世話になっております java 1.4.1 struts 1.1 Eclipse2.1.3 上にてwebアプリケーションの開発を行っております DynaActionFormを利用し、配列型のテキストボックスをsubmitする画面を作成しております。 String型の配列は取得できたのですが、 struts-config.xmlにて配列の要素数を指定しております。 テキストボックスの数は可変となる為、要素数を固定値で指定したくなく、 変わりにArrayListを使用出来ないかと考えております。 struts-config.xmlの対象のform-propetyエレメントのtype属性を"java.util.ArrayList" と変更してみたのですが、submitした時に アクションクラスのexecuteメソッドに来る前に 例外が発生しており、 「java.lang.IndexOutOfBoundsException: Index: 19, Size: 0」 といった例外がブラウザに表示されております。(文字制限の為、省略しております。) ArrayListを使用する場合でも要素数の定義などが必要ということなのでしょうか。 また、Stringの配列で要素数を指定しなくても取得する方法はございませんでしょうか。 当方、Strutsがまだ勉強し始めな状態のため、説明が至らない部分がございますことをご容赦ください。 ご教授の程、何卒よろしくお願いいたします。

    • ベストアンサー
    • Java