- ベストアンサー
値をセットしたい
Swingで「開くボタン」と「印刷ボタン」を作りました。 カンマ区切りのtxtファイルを開き、必要な項目だけリスト(DefaultListModel使ってます)表示。 印刷ボタンを押して印刷というのを作りたいのですが、リストに表示されたデータ等をPrObjectに渡せなくて困っています。 ※1のところでリストに表示されているデータをString[]のhakoに入れ、※2でセットして、と思っているのですが※1で互換性のない型とエラーが出ます。 初心者なもので行き詰ってしまいました。 アドバイス、ヒント、ツッコミなんでもいいのでよろしくお願いします。 public class SwingTest extends JFrame implements ActionListener { 略 public SwingTest(){ JButton Open = new JButton("開く"); //ボタン JButton Print1 = new JButton("印刷"); //ボタン 略 } public void actionPerformed(ActionEvent e){ String s = e.getActionCommand(); if(s.equals("Open")==true){ //開く 略 while ((line=br.readLine()) != null) { String[] token = line.split(","); String str = token[16] + " "+ token[19]; model.addElement(str); } 略 if(s.equals("Print1")==true){ //印刷 String[] hako; //※1 for (int i = 0; i < model.getSize(); i++){ hako[i] = (model.getElementAt(i)); } PrObject pobj = new PrObject(); pobj.setPrintStrings(hako); //※2 略 pjob.setPrintable(pobj,fmt); 略 }}} class PrObject implements Printable{ private String[] printStrings = null; public void setPrintStrings(String[] strs){printStrings = strs;} public int print(Graphics g,PageFormat fmt,int pageIndex){ if(pageIndex>0){ drawString略 }}} }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、※1の互換性がないというエラーですが、※1以降で発生ということでよいですか? #※1部分だと変数宣言だけなので、エラーはないと思いますので… で、原因ですが、多分model.getElementAt(i)の戻り値がObjectにもかかわらず、String[]に入れようとしているからだと思われます。 なので、以下のようにStringでキャストすればよいと思います。 hako[i] = (String)model.getElementAt(i); または hako[i] = model.getElementAt(i).toString(); あと、String[] hako;ですが、宣言した後に初期化処理がないので、値設定時にエラーになります。 ここも以下のように初期化処理を追加してみてください。 String[] hako = new String[model.getSize()];
その他の回答 (1)
- jikankou
- ベストアンサー率38% (42/108)
まずmodelの変数のクラスは何ですか?(恐らくDefaultListModel?) であるなら、model.getElementAt(i);はObject型を返すのであって String 型を返さないのではないですか?Stringでキャストすれば 済むと思います。(全コードが載っていないので、ざっと目を通したのとエラーメッセージからの推測だけですが・・・)
お礼
お返事ありがとうございます。 ※1以降のエラーです、すいません; おかげ様で思うようになりました! エラーの時点で「互換性がない」=Objectだ!というのはわかっていたのですが、キャストの書き方がわからなかったというのが本音です; String[model.getSize()]でhakoの要素数を取れるんですね。 勉強になりました。 これで次に進めます。ありがとうございました^^