JScrollPane内にJlistがあり、大きなリストの幅を計算する必要がないようにプロトタイプ値を設定しましたが、このデフォルトの幅を使用するだけです。
ここで問題となるのは、Jlistが何らかの理由で要素の末尾をドット(...)に置き換えているため、水平スクロールバーが表示されないことです。
「ラッピング」で無効にするにはどうすればよいですか?長い要素がJlistの幅よりも広い場合、ドットに置き換えられないようにするには?
小さなサンプルアプリケーションで問題を再現しました。私の意味がわからない場合は、実行してください。
import javax.swing.*;
import java.awt.*;
public class Test
{
//window
private static final int windowWidth = 450;
private static final int windowHeight = 500;
//components
private JFrame frame;
private JList classesList;
private DefaultListModel classesListModel;
public Test()
{
load();
}
private void load()
{
//create window
frame = new JFrame("Test");
frame.setSize(windowWidth, windowHeight);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
//classes list
classesListModel = new DefaultListModel();
classesList = new JList(classesListModel);
classesList.setPrototypeCellValue("prototype value");
classesList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
classesList.setVisibleRowCount(20);
JScrollPane scrollClasses = new JScrollPane(classesList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
for (int i = 0; i < 200; i++)
{
classesListModel.addElement("this is a long string, does not fit in width");
}
//panel
JPanel drawingArea = new JPanel();
drawingArea.setBackground(Color.white);
drawingArea.add(scrollClasses);
frame.add(drawingArea);
//set visible
frame.setVisible(true);
}
}
水平スクロールバーを強制しても、ドット(...)が折り返されているため、要素は実際には幅よりも広くないため、スクロールすることはできません。
前もって感謝します。