我之前发过一个类似的问题,但无论如何,我想这更好地解释了我的问题。请参阅此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();
// }});
}}
我在第二个例子中看到的是一个空的文本框。我究竟做错了什么?
答案 0 :(得分:1)
我只是认为当textpane不可编辑时,replaceSelection不会插入文本(在我的情况下它不可编辑!) - 我简直不敢相信我在这上面读了javadoc 50次,但我一直想念那个一条线。无论如何,问题现在解决了!