Я уже писал вопрос, похожий на этот, но в любом случае, я думаю, это лучше объясняет мою проблему. Пожалуйста, обратитесь к этой ссылке . Если вы заметили, все примеры показывают, что содержимое вашей текстовой панели должно быть подготовлено до того, как оно будет добавлено в панель содержимого! Почему это так?
Например, этот кусок кода:
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();
// }});
}}
Все, что я вижу, это пустое текстовое поле во втором примере. Что я делаю неправильно?