Не вижу область прокрутки в ярлыке - Swing - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть графический интерфейс с двумя полями: текстовая область и метка

Первое поле с рабочей полосой прокрутки:

public class ResultView {
    private JTextArea resultsTextArea;
    private JPanel resultsPanel;
    private JScrollPane scrollPane;

    public ResultView() {
        createGUI();
        connectPanel();
    }

    private void createGUI() {
        resultsTextArea = new JTextArea("Command results:");
        resultsTextArea.setPreferredSize(new Dimension(380, 2000));
        resultsTextArea.setBackground(Color.BLACK);
        resultsTextArea.setForeground(Color.WHITE);
        resultsTextArea.setEditable(false);

        scrollPane = new JScrollPane(resultsTextArea);
        scrollPane.setPreferredSize(new Dimension(400, 300));
    }

    private void connectPanel() {
        resultsPanel = new JPanel();
        resultsPanel.add(scrollPane);
    }

Второе поле, в котором не отображается полоса прокрутки:

public class DrawView {
    private JLabel drawView;
    private JPanel drawViewPanel;
    private JPanel drawViewPaintPanel;
    private int currentNumWagons;
    private int currentTrain = -1;
    private int OFFSET = 100;
    private int TRAINLENGTH = 100;
    private JScrollPane scrollPane;

    public DrawView() {
        createGUI();
        connectPanel();
    }

    private void createGUI() {
        drawView = new JLabel("DrawView:");
        drawView.setPreferredSize(new Dimension(800,20));

        drawViewPaintPanel = new JPanel();
        drawViewPaintPanel.setPreferredSize(new Dimension(790, 280));

        scrollPane = new JScrollPane(drawView);
        scrollPane.setPreferredSize(new Dimension(800,300));
    }

    private void connectPanel() {
        drawViewPanel = new JPanel(new BorderLayout());
        drawViewPanel.add(drawView, BorderLayout.NORTH);
        drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
        drawViewPanel.add(scrollPane);
    }

Есть идеи, как решить эту проблему?Мне нужно решить эту проблему, потому что кнопка действия добавляет поезда к метке, при добавлении более двух поездов третий поезд попадает под метку.Я добавлю сюда фотографию моего графического интерфейса, чтобы вы могли увидеть, как устроен мой графический интерфейс:

GUI

1 Ответ

0 голосов
/ 04 декабря 2018
drawView.setPreferredSize(new Dimension(800,20));

Избавьтесь от всех операторов setPreferredSize ().

Задачей менеджера макета является определение размера панели на основе компонентов, добавленных на панель.

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

drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
drawViewPanel.add(scrollPane);

Если вы не укажете ограничение при добавлении компонентов в BorderLayout, они будут помещены в CENTER.Однако в CENTER может отображаться только один компонент, поэтому scrollPane заменяет drawViewPaintPanel.

resultsTextArea = new JTextArea("Command results:");
resultsTextArea.setPreferredSize(new Dimension(380, 2000));

Для JTextArea вы можете предложить предпочтительный размер, используя:

resultsTextArea = new JTextArea(5, 30);
resultsTextArea.setText("Command results:");
//resultsTextArea.setPreferredSize(new Dimension(380, 2000));

Текстобласть теперь будет иметь 5 строк текста.После 5 строк появятся полосы прокрутки.

...