JTextPane: Как вы обновляете его после добавления в макет? - PullRequest
2 голосов
/ 02 февраля 2012

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

Например, этот кусок кода:

    public class PaneInsertionMethods {
  public static void main(String[] args) {
    final JTextPane pane = new JTextPane();
    pane.replaceSelection("text");
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(pane, BorderLayout.CENTER);
    frame.setSize(360, 180);
    frame.setVisible(true);
  }
}

работает хорошо. Но если я попытаюсь сделать что-то вроде этого:

public class PaneTest extends JFrame {
private JTextPane pane;
public PaneTest() {
   initComponents();
}
private void initComponents() {
    pane = new JTextPane();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    getContentPane().add(pane, BorderLayout.CENTER);
    setSize(360, 180);
    setVisible(true);
}
public void populatePane() {
    pane.replaceSelection("text");  
   //or something like this.. doesn't work
   //pane.revalidate(); pane.repaint();

}
public static void main(String args[]) {
    PaneTest test = new PaneTest();
    test.populatePane();
    //or even something like this doesn't work:
    //SwingUtilities.invokeLater(new Runnable() {
    // public void run() {
    //     test.populatePane();
    //   }});
}}

Все, что я вижу, это пустое текстовое поле во втором примере. Что я делаю неправильно?

1 Ответ

1 голос
/ 02 февраля 2012

Я только что подумал, что replaceSelection не вставляет текст, когда текстовая панель не редактируется (в моем случае это не редактировалось!) одна линия. В любом случае, проблема решена сейчас!

...