2017-01-30 4 views
-2

残念ながら、私はこの質問を何度も見たことがありますが、残念ながら私が実装しなければならないことを解釈するには十分です自分のコード。コンポーネントが実行時に追加された後にJScrollPaneをスクロール可能にする方法

私はnetbeansでGUIエディタを使用して、この上にJScrollPaneとJPanelを作成しました。私はこれらのコンポーネントを実行時に他のすべてと一緒に作成できることを知っていますが、これは問題があることが判明し、単にエディタにスクロールペインとパネルを追加し、

これまでのところ、コンポーネントを作成してパネルに追加することは問題ありません。私が直面している問題は、スクロールペインが更新されず、ユーザーがさらに下にスクロールして、作成されたコンポーネントを下から見ることができるということです。ボタンを押すたびにJTextFieldが作成され、このコンポーネントがパネルに追加されるたびに、より多くのコンポーネントが後で追加されますが、これは単なる実験です。

「エントリ」の「リスト」がウィンドウの制限を超えたら、ウィンドウを下部に表示するためにウィンドウのサイズを変更する必要がありますが、特定のエントリ数(約25-30)スクロールバーがパネルをスクロールしないため、表示されなくなりました。

これは私が、実行時にコンポーネントを追加しています方法です...

JTextField txtName1 = new JTextField(); 

txtName1.setLocation(10, 90); 
txtName1.setSize(135, 25); 

pnlContainer.add(txtName1); 

「pnlContainerは私JScrollPaneにある「jspContainer」の上に取り付けられており、私は「再描画を()」を使用していますメソッドを使用して、コンポーネントをパネル上に表示します。

これまでのところ、実行時にコンポーネントを追加すると、すべてのコンポーネントが表示され、対話可能になりました。

私は一般的にわずか数年の経験で一般的なプログラミングを始めていますが、参考になるかもしれないドキュメンテーションやチュートリアルなどがあれば大歓迎です。私はまだ多くのことを学ぶ必要があるので、ドキュメントはいつでも歓迎します。

+0

私は私の質問に言い方を改善する方法についてコメントしていただきたいと思います。以前に尋ねられたことは分かっていますが、私が見ているいくつかの例を理解していないので、私のコードに同じ原則を適用できません。さらに、私はこれにかなり新しいので、私はどのような質問をする必要があり、私はどのように相対的な結果を見つけるためにそれらを求めている必要があります知りません。 –

+0

1)[ツアー]に行き、[ヘルプ]を見て、[ask]と有効な[mcve]または[短く、自己完結型の正しい例](http://sscce.org)を投稿する方法を読んでください。この質問はチュートリアル/ドキュメンテーションを求めているので話題にはならず、あなたの問題を示すMCVEが欠けていることに注意してください。 – Frakcool

+0

私は単にスクロールペインがユーザにプログラム全体を下にスクロールすることを可能にしたい。私はJScrollPaneがどのように動作するのか完全に理解していません.netbeansのドキュメントは本当に大きな助けにはなりません。私はJScrollPaneとJPanelを持っていますが、実行中にボタンが押されると、パネルに多くのコンポーネントが追加されますが、パネル上に多くのコンポーネントが生成されても、プログラムウィンドウの下部追加されたコンポーネントの数が最大ウィンドウの高さを超えるため、スクロールバーが必要なのはなぜですか。 –

答えて

2
JTextField txtName1 = new JTextField(); 
txtName1.setLocation(10, 90); 
txtName1.setSize(135, 25); 
pnlContainer.add(txtName1); 

これまでのところ、実行時にコンポーネントを追加すると、すべてのコンポーネントが表示され、対話可能な、取り組んできました。

上記のコード例では、nullレイアウトを使用していることを意味する各コンポーネントのサイズ/場所を設定しています。ヌルレイアウトを使用しないでください!

スイングはレイアウトマネージャで使用するように設計されており、レイアウトマネージャでパネルを使用するとスクロールが適切に機能します。

レイアウトマネージャは、パネルの「推奨サイズ」を決定します。パネルの適切なサイズがスクロールパネルのサイズより大きい場合、パネルはスクロールバーを自動的に表示します。

ヌルレイアウトを使用する場合、パネルの推奨サイズは0なので、スクロールバーは決して表示されません。

+0

これはデフォルトで設定されていると思っています。スクロールバーが表示されなくなりました。私がこれを試してみる前に、私はスクロールペインではなくパネルのレイアウトを設定したと思いますが、特定のレイアウトを使用する必要がありますか? –

+0

@ D.mcadam、データの行を追加しているようです。したがって、縦型の[Box Layout](http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html)を使用する必要があります。または、データの行を表示するために[JTable](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html)を使用する必要があります。私たちは、特定の提案に対して十分な情報がありません。 – camickr

+0

さらにヘルプが必要な場合は、問題を示す[mcve]を投稿してください。したがって、 'MCVE'は、空のパネルとパネルにコンポーネントを追加するためのボタンが付いたフレームになります。このプロセスは、約20〜30行のコードで 'MCVE 'を使ってテストできます。基本概念を理解したら、実際のアプリケーションにその知識を適用します。 – camickr

関連する問題