2

ボタンを押すたびに、実行時に新しいパネルを別のパネルに挿入しようとしています。私の問題は、元のパネルのスペースが不足していて、追加しようとしている新しいパネルが表示されないことです。

私がこれまでに試したこと:

  • 垂直スクロールにスクロールペインを使用しても成功しません。
  • flowlayout を使用する - 運が悪い。水平スクロールを無効にしてみました-新しいパネルを右に押し続けます(スクロールがないため、アクセスできません)。
  • borderlayout を使用してみました-運がありません。

testpanel t = new testpanel();
t.setVisible(true);
this.jPanel15.add(t);   
this.jPanel15.validate();
this.jPanel15.repaint();

tこのコードは、パネルをに挿入することを想定していjpanel15ます。flowlayout を使用すると、必要に応じてtパネルを下に押しますが、垂直スクロールはしません。

PS: GUI を作成するために netbeans を使用しています。

4

2 に答える 2

1

私の問題は、元のパネルのスペースが不足していて、追加している新しいパネルが表示されないことです。垂直スクロールにスクロールペインを使用しようとしましたが、成功しませんでした。

FlowLayout はコンポーネントを垂直方向ではなく水平方向に追加するため、垂直スクロールバーは表示されません。代わりに、 Wrap Layoutを試すことができます。

スクロールペインを作成する基本的なコードは次のとおりです。

JPanel main = new JPanel( new WrapLayout() );
JScrollPane scrollPane = new JScrollPane( main );
frame.add(scrollPane);

次に、コンポーネントをメイン パネルに動的に追加する場合は、次のようにします。

main.add(...);
main.revalidate();
main.repaint(); // sometimes needed
于 2013-06-03T15:05:03.257 に答える
0
  1. JScrollPane(アウター)の代わりに使うJPanel
  2. または、BorderLayoutをにして、唯一のコントロールとしてatをJPanel入れます。は通常のas ビューを取ります。JScrollPaneBorderLayout.CENTERJScrollPaneJPanel

いずれにせよ、次にコントロールを に追加しますJScrollPaneJScrollPane変数がspnで、追加するコントロールが ctrl であるとします。

// Creation of the JScrollPane: Make the view a panel, having a BoxLayout manager for the Y-axis
JPanel view = new JPanel( );
view.setLayout( new BoxLayout( view, BoxLayout.Y_AXIS ) );
JScrollPane spn = new JScrollPane( view );

// The component you wish to add to the JScrollPane
Component ctrl = ...;

// Set the alignment (there's also RIGHT_ALIGNMENT and CENTER_ALIGNMENT)
ctrl.setAlignmentX( Component.LEFT_ALIGNMENT );

// Adding the component to the JScrollPane
JPanel pnl = (JPanel) spn.getViewport( ).getView( );
pnl.add( ctrl );
pnl.revalidate( );
pnl.repaint( );
spn.revalidate( );
于 2013-06-03T11:32:18.803 に答える