Добавить полосу прокрутки в текстовую область - PullRequest
1 голос
/ 28 июня 2019

Я использую Eclipse Window Builder. Когда я нажимаю кнопку, что-то будет написано на экране. Но так как мои отпечатки длинные, я хочу использовать панель прокрутки.

public class uyg2 extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                uyg2 frame = new uyg2();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public uyg2() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JButton btnNewButton = new JButton("New button");
    btnNewButton.setBounds(32, 29, 89, 23);
    contentPane.add(btnNewButton);

    JTextArea textArea = new JTextArea();
    textArea.setBounds(10, 63, 233, 173);
    contentPane.add(textArea);

    ScrollPane scrollPane = new ScrollPane();
    scrollPane.setBounds(249, 10, 173, 118);
    contentPane.add(scrollPane);
}

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Итак, на основе ...

public class uyg1 extends JFrame {

    private JPanel contentPane;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    uyg1 frame = new uyg1();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
    }

    /**
     * Create the frame.
     */
    public uyg1() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        JTextArea textArea = new JTextArea("Test");
        textArea.setSize(400, 400);
        JScrollPane scroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        frame.getContentPane().add(scroll);
        frame.setVisible(true);
    }
}

textArea.setSize(400, 400); не имеет значения, так как менеджер раскладки будет иметь дело с этим.Вы можете предоставить подсказки по размерам через конструктор JTextArea(String, int, int), но помните, это количество символов в ширине / высоте, а не в пикселях.

Следующие вопросы вызывают проблемы ...

frame.getContentPane().add(scroll);
frame.setVisible(true);

потому что frame не определено.Поскольку класс расширяется от JFrame, они бессмысленны, просто он должен быть

getContentPane().add(scroll);
setVisible(true);

, но я бы добавил ...

pack();
setLocationRelativeTo(null);

перед ним, так как он будетдать вам в целом лучший опыт

0 голосов
/ 28 июня 2019

Вам нужно добавить TextArea в ScrollPane. Не добавляйте текстовую область в область содержимого.

...