JTextPane:如何在将其添加到布局后更新它?

时间:2012-02-02 14:28:05

标签: java swing jtextpane

我之前发过一个类似的问题,但无论如何,我想这更好地解释了我的问题。请参阅此link。如果您注意到,所有示例都表明您的textpane内容必须在添加到内容窗格之前准备好!为什么会这样?

例如,这段代码:

    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 个答案:

答案 0 :(得分:1)

我只是认为当textpane不可编辑时,replaceSelection不会插入文本(在我的情况下它不可编辑!) - 我简直不敢相信我在这上面读了javadoc 50次,但我一直想念那个一条线。无论如何,问题现在解决了!