Я пытаюсь выяснить, почему мой JComponent обновляется, когда я вручную перетаскиваю свое окно, но не обновляется, когда я вызываю repaint или revalidate.Данные готовы к отображению, но они не будут отображаться, пока я не изменю размер вручную.Кто-нибудь может дать несколько советов о том, что я могу сделать, или это звучит так, как будто это не проблема Swing, так как я пытался перерисовать и заново подтвердить?
sp.setSize(sp.getSize().width, sp.getSize().height+1);
sp.setSize(sp.getSize().width, sp.getSize().height-1);
Если используется первая строка, JComponent обновится сам.Если я не использую ни одну, или обе эти строки, это не так, что мне кажется странным.
Я просто помещаю JPanel в JInternalFrame в JDesktopPane.Есть две основные функции для того, что я пытаюсь сделать.Один добавляет новый JPanel, а другой пытается обновить его, чтобы отобразились новые данные:
public void addNewSP()
{
sp = new JInternalFrame("SP");
sp.setClosable(true);
sp.setLocation(700, 400); //this should be changed to something based on screen size
sp.setResizable(true);
sp.add(popUp);
this.parentContainer.add(sp, JLayeredPane.DRAG_LAYER);
sp.pack();
sp.show();
sp.setSize(500, 500);
sp.setPreferredSize(new Dimension(500, 500));
}
public void refreshSP()
{
sp.repaint();
sp.validate();
sp.repaint();
sp.validate();
parentContainer.validate();
parentContainer.repaint();
sp.setSize(sp.getSize().width, sp.getSize().height+1);
sp.setSize(sp.getSize().width, sp.getSize().height-1);
}
}
BTW parentContainer - это JDesktopPane