У меня есть Jlist внутри JScrollPane, и я установил значение прототипа, чтобы он не вычислял ширину для больших списков, а просто использует эту ширину по умолчанию.
Теперь проблема в том, что 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);
}
}
Даже если вы нажмете горизонтальную полосу прокрутки, вы все равно не сможете прокрутить, потому что элемент на самом деле не шире ширины из-за переноса точки (...).
Заранее спасибо.