0

可変高さのテキスト領域と、ウィンドウ幅を埋めるその他のもの (サンプル コードのコンボ ボックス) を使用します。以下のエラーが発生します。
- 「innerPanel.setPreferredSize」を使用する場合、テキスト領域に改行を入力したり、ウィンドウを縦方向にリサイズしたりして、テキスト領域がウィンドウよりも高くなると、スクローラーが表示されません。
- 「innerPanel.setPreferredSize」を使用しない場合 (以下のサンプル コードのコメントに示されているように)、使用されるスイング要素は、ウィンドウ幅のサイズ変更時に水平方向に拡大しますが、水平方向に縮小することはありません。

JPanel innerPanel = new JPanel(new GridBagLayout());
JTextArea editArea = new JTextArea();
editArea.setLineWrap(true);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1.;
innerPanel.add(editArea, gbc);
JComboBox combo = new JComboBox();
gbc.gridy = 1;
innerPanel.add(combo, gbc);
JScrollPane scroller = new JScrollPane(innerPanel,
  JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
  JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//innerPanel.setPreferredSize(new Dimension(50, 50));
JPanel outerPanel = new JPanel(new BorderLayout());
outerPanel.add(scroller);
frame.setContentPane(outerPanel);
4

0 に答える 0