Прокрутка JLabel в Java
У меня есть небольшая проблема с Jlabel. Когда метка отображает двойные, которые являются большими для экрана, я бы хотел иметь полосу прокрутки, чтобы увидеть их в любом случае. Я только что добавил полосу прокрутки ко всей панели, но она не проверяет, когда отображается слишком длинный двойник.
вот мой код
public class OverviewPanel extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel textNoNodes = new JLabel();
private JLabel textNoEdges = new JLabel();
private JLabel textInitial = new JLabel();
private JLabel textTargets = new JLabel();
private JLabel textFilename = new JLabel();
private JLabel textProbabilityModelCheck = new JLabel();
private JLabel textProbabilityCounterExample = new JLabel();
private JLabel textNoSteps = new JLabel();
public OverviewPanel() {
super(new SpringLayout());
addRow("Number states", textNoNodes);
addRow("Number edges", textNoEdges);
addRow("Initial", textInitial);
addRow("Targets", textTargets);
addRow("Filename", textFilename);
addRow("Prob. model check", textProbabilityModelCheck);
addRow("Prob. counter example", textProbabilityCounterExample);
addRow("Number steps", textNoSteps);
SpringUtilities.makeCompactGrid(this, 8, 2, // rows, cols
6, 6, // initX, initY
6, 6); // xPad, yPad
setDefault();
}
private void addRow(String text, JComponent component) {
JLabel l = new JLabel(text);
add(l);
l.setLabelFor(component);
add(component);
}
...
}
3 ответа
Использование pack()
, который "вызывает это Window
иметь размер, соответствующий предпочтительному размеру и расположению его подкомпонентов." Sscce также может быть полезным.
Приложение: пример DecimalFormat
может помочь контролировать крайнюю изменчивость размера.
ИМХО, я бы использовал модифицированный JTextArea
(т.е. отключен, упакован и непрозрачен). Не требуется прокрутка, изменение размера или вычисление метрики шрифта!
Я не уверен, потому что я не знаю Springlayout, так или иначе, я думаю, что вы должны установить размер этикетки в соответствии с размером текста. Чтобы получить его вы можете использовать:
FontMetrics fm = someComponent.getFontMetrics(someFont);
int width = fm.stringWidth(someString);
может быть, добавив немного дополнительного пространства. Затем с меткой на фактической ширине контейнер должен прокрутиться...
Конечно я говорю о минимальном размере или он неэффективен...