• ベストアンサー

開いたファイルをJListに追加したい

最近、Swingを勉強し始めたばかりです。 開くボタンを作りファイルチューザでcsvファイルを開き、1行ずつ引っ張り出してきて全データをJListに表示したいのですがうんともすんともいいません。 知恵をお貸しくださいお願いします(T_T) 鈴木一郎,東京都,渋谷110,1960 松井一郎,大阪府,大阪市119,1928 class SwingTest extends JFrame implements ActionListener{ private static JFrame frame; private JFileChooser chooser = new JFileChooser(); private Container pane = getContentPane(); private DefaultListModel myList = new DefaultListModel(); 略 public void actionPerformed(ActionEvent e){ String s = e.getActionCommand(); if(s.equals("Open")==true){ JFileChooser chooser = new JFileChooser(); int returnval = chooser.showOpenDialog(this); li.setPreferredSize(new Dimension(500,300)); if(returnval == JFileChooser.APPROVE_OPTION){ File file = chooser.getSelectedFile(); FileInputStream fis = new FileInputStream( file ); InputStreamReader isr = new InputStreamReader( fis ); BufferedReader br = new BufferedReader( isr ); String line = br.readLine(); String[] token = line.split(","); String str = token[0] + "\t" + token[3]; myList.addElement(str); li.setModel(myList); }

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.2

 こんにちは。  どこに問題があるのかよくわからなかったので、似たようなサンプルを作ってみたのですが、ちゃんと動きます。  ↓のコードを試してみるとどうなりますか? (全角スペースを半角スペースに変換してからコンパイルしてください) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ListTest extends JFrame implements ActionListener {   JList list;   JButton button;      public static void main(String[] args) {     ListTest frame = new ListTest();     frame.setSize(400, 300);     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.setVisible(true);   }      public ListTest() {     button = new JButton("追加");     button.addActionListener(this);     getContentPane().add(button, BorderLayout.SOUTH);          list = new JList();     JScrollPane scroll = new JScrollPane(list);     getContentPane().add(scroll, BorderLayout.CENTER);   }      public void actionPerformed(ActionEvent event) {     DefaultListModel model = new DefaultListModel();     model.addElement("おはよう");     model.addElement("こんにちは");     model.addElement("こんばんは");     list.setModel(model);   } } -------------------------------------------  あと、あらかじめDefaultListModelを使ったJListを作っておき、データを追加したり削除したりするときは、listModelを操作したほうが、すっきりすると思うのですが、どうでしょう?  こんな↓感じです。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ListTest extends JFrame implements ActionListener {   JList list;   DefaultListModel model;   JButton button;      public static void main(String[] args) {     ListTest frame = new ListTest();     frame.setSize(400, 300);     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.setVisible(true);   }      public ListTest() {     button = new JButton("追加");     button.addActionListener(this);     getContentPane().add(button, BorderLayout.SOUTH);          model = new DefaultListModel();          list = new JList(model);     JScrollPane scroll = new JScrollPane(list);     getContentPane().add(scroll, BorderLayout.CENTER);   }      public void actionPerformed(ActionEvent event) {     model.clear();     model.addElement("おはよう");     model.addElement("こんにちは");     model.addElement("こんばんは");   } }

akigiri0213
質問者

お礼

お返事ありがとうございます! サンプルありがとうございます! 参考にさせていただいたおかげで出来ました! DefaultListModelの書き方がまずかったようです(汗) 感謝感激です(*´∀`*)

その他の回答 (1)

  • koki_m
  • ベストアンサー率83% (45/54)
回答No.1

こんばんは。 まずはもう少し「うまくいかない箇所」がどこなのかを絞り込む必要がありそうですね。 ボタンのアクションメソッドが呼ばれないのか、ファイル選択まではできるけどリストにデータが表示されないのかも分かりません。 例えば、まずはボタンアクション抜きにして、 myList.addElement(str); のところに適当な文字列を入れて動かしてみて、それが表示されればJListは問題ないことが分かります。 一度に ・ボタンアクション ・ファイル参照取得 ・ファイルオープン ・テキスト処理 ・リストモデル編集 ・JListビューの更新 と多くのことをやろうとしても、何が分からないのかが分からない状態になってしまうと思います。 上から順番に、どこまでできているのかを調査してみてください。

akigiri0213
質問者

補足

お返事ありがとうございます! 書き方がまずかったようで…(汗) ・ボタンアクション ・ファイル参照取得 ・ファイルオープン ・テキスト処理 ボタンを押すとファイルダイアログが開き、テキストファイルを選択、データの1行分だけを取り出してSystem.out.printlnで表示させることは出来ました。 ・リストモデル編集 ・JListビューの更新 strに1行分を取り出すことは出来たので、 private DefaultListModel myList = new DefaultListModel(); を使い、アクションの部分でmyList.addElement(str); をしたのですが何も表示されませんでした。 エラーが出なかったのでわからなくなり、書き込みさせてもらいました。 お手数ですがヒントをいただけたらと… よろしくお願いします(汗)

関連するQ&A