Компоненты JScrollPane не отображаются - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь поместить некоторые компоненты в JScrollPane, но каждый раз, когда я запускаю свою программу, они не появляются. Я только начал изучать графические интерфейсы сегодня, поэтому я полагаю, что пропустил что-то маленькое, но где бы я ни смотрел в Интернете, я не могу найти ответ. Единственное, что появляется, - это сам JScrollPane.

class MainFrame extends JFrame{
    public MainFrame(String title){
        //Main Frame Stuff
        super(title);
        setSize(655, 480);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

        //Layout
        FlowLayout flow = new FlowLayout();
        setLayout(flow);

        //Components
        JButton spam_button = new JButton("Print");
        JLabel label = new JLabel("What do you want to print?",
                                  JLabel.LEFT);
        JTextField user_input = new JTextField("Type Here", 20);

        //Scroll Pane
        JScrollPane scroll_pane = new JScrollPane(
                ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scroll_pane.setPreferredSize(new Dimension(640, 390));

        //Adding to Scroll
        scroll_pane.add(label);
        scroll_pane.add(user_input);
        scroll_pane.add(spam_button);

        //Adding to the Main Frame
        add(scroll_pane);

        //Visibility
        setVisible(true);
    }
}

Суть программы - печатать все, что вы набираете, 100 раз, но я еще не дошел до этого, потому что меня повесили по этой проблеме прокрутки. Когда я, наконец, получу что-то, что появится на панели прокрутки, я переместу эти три компонента в JPanel над панелью прокрутки, а затем я добавлю 100 слов в область прокрутки, чтобы вы могли прокручивать через это.

1 Ответ

1 голос
/ 30 мая 2020

Сегодня я только начал изучать графические интерфейсы

Итак, первым делом нужно начать с учебника Swing . Существует много демонстрационного кода, который можно загрузить, протестировать и изменить.

scroll_pane.add(label);
scroll_pane.add(user_input);
scroll_pane.add(spam_button);

JScrollPane не похож на JPanel:

  1. вы не добавляете компоненты непосредственно на панель прокрутки . Вы добавляете компонент в viewport панели прокрутки
  2. только один компонент может быть добавлен в область просмотра.

Итак, ваш код должен выглядеть примерно так:

JPanel panel = new JPanel();
panel.add(label);
panel.add(user_input);
panel.add(spam_button);
scrollPane.setViewportView( panel );
...