прокрутка JLabel в Java - PullRequest
       40

прокрутка JLabel в Java

1 голос
/ 10 января 2012

У меня есть небольшая проблема с 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 ]

3 голосов
/ 10 января 2012

Используйте pack(), что означает «Размер Window должен соответствовать размеру и размерам его подкомпонентов». sscce тоже может быть полезным.

Добавление: экземпляр DecimalFormat может помочь контролировать крайнюю изменчивость размера.

2 голосов
/ 10 января 2012

ИМХО, я бы использовал модифицированный JTextArea (т.е. отключен, упакован и непрозрачен). Не требуется прокрутка, изменение размера или вычисление метрики шрифта !

1 голос
/ 10 января 2012

Я не уверен, потому что я не знаю Springlayout, в любом случае, я думаю, что вы должны установить размер этикетки в соответствии с размером текста.Чтобы получить его, вы можете использовать:

FontMetrics fm = someComponent.getFontMetrics(someFont);
  int width = fm.stringWidth(someString);

, возможно, добавив немного дополнительного пространства.Затем с меткой на фактической ширине контейнер должен прокрутить ...

Конечно, я говорю о минимальном размере или он неэффективен ...

...