JEditorPane в JScrollPane, не изменяющем размер по мере необходимости

Вы объединяете 3 таблицы, но результат просто:

select o?

Какова цель вашего объединения?

Проверьте ответ выше или проверьте Также это, если это разные типы:

on o.Id equals r.root
on r.Id equals s.Id 
r.val== SomeVal
5
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

При уменьшении размера JEditorPane в JScrollPane и затем сокращении его, не возможно. Можно хотеть использовать JTextArea вместо этого.

-1
ответ дан 13 December 2019 в 05:44
поделиться

На самом деле это возможно, luiscubal. Вот как

В JScrollPane добавить ComponentListener для событий изменения размера.

public static void main(String...args) {
    //our test frame
    JFrame frame = new JFrame("JEditorPane inside JScrollPane resizing");
    frame.setLayout(new BorderLayout());

    //our editing pane
    final JEditorPane editor = new JEditorPane();

    //our simple scroll pane
    final JScrollPane scroller = new JScrollPane(editor);

    //NOTE: this is the magic that is kind of a workaround
            // you can also implement your own type of JScrollPane
            // using the JScrollBar and a JViewport which is the 
            // preferred method of doing something like this the 
            // other option is to create a JEditorPane subclass that
            // implements the Scrollable interface.
    scroller.addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent e) {
            editor.setSize(new Dimension(
                               scroller.getWidth()-20, 
                               scroller.getHeight()-20));
        }
    });

    //just use up the entire frame area.
    frame.add(scroller, BorderLayout.CENTER);

    //quick and dirty close event handler
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(320, 240); //something not too big
    frame.setLocationRelativeTo(null); //centers window on screen
    frame.setVisible(true); // normally done in a SwingUtilities.invokeLater
}

Посмотрите luiscubal, это возможно. Не спешите объявлять о том, что на Java невозможно. Swing api довольно гибкий и может сделать большую часть работы за вас. Однако, если вы используете JComponents так, как они не предназначены для использования, у вас возникнут проблемы и у вас будет два варианта.

  1. подкласс подкласс подкласса в основном создает свой собственный компонент.
  2. найдите обходной путь, аналогичный приведенному выше решению.
4
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: