0

動的に入力したいリストがあるため、スクロールバーが必要です。リストにスクロールバーを追加しました。問題は、リストをパネルに追加しようとしたときです。リストにスクロールバーが表示されますが、リストの要素のサイズが大きくなっても機能しません。

JPanel p4=new JPanel();
Container c=getContentPane();
myList=new JList(model);
myList.setVisibleRowCount(5);
myList.setFixedCellWidth(200);

p4.add(new JScrollPane(myList,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
     ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS));
c.add(p4);
4

2 に答える 2

2

ここでは問題なく動作します。このSSCCEにはSplitPaneDemo.javaファイルを使用し、不要なものをすべて取り除きました。

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import java.awt.BorderLayout;

public class SplitPaneDemo extends JPanel {
  private JList<String> list;
  private String[] imageNames = { "Bird", "Cat", "Dog", "Rabbit", "Pig", "dukeWaveRed",
      "kathyCosmo", "lainesTongue", "left", "middle", "right", "stickerface"};
  public SplitPaneDemo() {
    setLayout( new BorderLayout(  ) );

    list = new JList<>(imageNames);
    list.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
    list.setSelectedIndex( 0 );

    add( new JScrollPane(list) );
  }

  /**
   * Create the GUI and show it.  For thread safety,
   * this method should be invoked from the
   * event-dispatching thread.
   */
  private static void createAndShowGUI() {

    //Create and set up the window.
    JFrame frame = new JFrame("SplitPaneDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    SplitPaneDemo splitPaneDemo = new SplitPaneDemo();
    frame.getContentPane().add(splitPaneDemo);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        createAndShowGUI();
      }
    });
  }
}
于 2012-04-07T07:47:28.550 に答える
0

同様の質問はこちら:こちら

ただし、あなたの場合、答えは同じではないと思います。リストに何かを追加すると、問題が発生する可能性があります。あなたはやってみることができます:

myList.revalidate();

変更後。

于 2012-04-07T07:57:40.263 に答える