- ベストアンサー
Java-Swing TextAreaにスクロールバーが表示されない!
複数の参考書、ネット、大学の先生に聞いても解決できないのですが、テキストエリアにスクロールバーが表示されません。 以下が、ポイントと思われるソースの一部です。 import javax.swing.*; import javax.swing.ScrollPaneConstants; import javax.swing.JScrollPane; public class MyClient extends JFrame implements MouseListener,MouseMotionListener,ActionListener { private Container c; JTextArea taMain; JScrollPane scrollPane = new JScrollPane(taMain); public MyClient() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,500); setVisible(true); c = getContentPane(); c.setLayout(null); taMain = new JTextArea(20,50); taMain.setBounds(10,10,150,300); c.add(taMain); c.add(scrollPane); taMain.setEditable(false); ・ ・ ・ ・ こんな感じです。 間違っている個所が分かりません。 困り果てているので、分かる方がいらっしゃれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 いくつか原因があります。 >c.add(taMain); 1.これは余分です。 コンテナに追加するのはJScrollPaneだけで十分です。 現在はこれが見えているので、スクロールペインが見えていません。 >taMain.setBounds(10,10,150,300); 2.位置とサイズを指定するのはJScrollPaneのほうです。 これだと、taMainのJScrollPaneの中の位置とサイズを決めていることになります。 また、JScrollPaneのサイズを決めていないのが、サイズが0で見えなくなってしまっています。 書くとしたらこうだと思います。 taMain = new JTextArea(20,50); JScrollPane scrollPane = new JScrollPane(taMain); scrollPane.setBounds(10,10,150,300); c.add(scrollPane);
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
>JTextArea taMain; >JScrollPane scrollPane = new JScrollPane(taMain); taMainがnullの時にJScrollPaneをnewしているので JScrollPane scrollPane = new JScrollPane(null); となっています。たぶんこれが原因です。 scrollPaneは >taMain = new JTextArea(20,50); の後でnewしてください。
補足
回答ありがとうごさいます。 ご指摘通りに、 JScrollPane scrollPane = new JScrollPane(taMain);を taMain = new JTextArea(20,50); の直後に持ってきて、上記のソースの下5行の部分を以下のように変更しました。 taMain = new JTextArea(20,50); JScrollPane scrollPane = new JScrollPane(taMain); c.add(taMain); c.add(scrollPane); taMain.setEditable(false); taMain.setBounds(10,10,150,300); ここで、 taMain.setBounds(10,10,150,300); の位置も変えました。<なぜか位置が設定されないので。 こちらをコンパイルしても表示されません。 大学の先生も試行錯誤してscrollPaneの宣言と生成の位置を上のようにかえてましたが、そのときもスクロールバーは表示されませんでした。 なぜなんでしょう?
お礼
で、できました! ありがとうございます、本当に助かりました! 先生も1時間近く考えて 「ごめんなさい。わかりません。」 って逃げたられたので、本当に困ってたんです。 ご親切にどうもありがとうございました。