Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Java > Swing, перерисовка компонента после перекрытия |
Автор: foreach 29.06.16, 09:39 |
Здравствуйте. Есть свой компонент Swing, наследник JComponent с переопределенным методом paint(). Компонент во всю форму JFrame. Если ресайзить форму, а значит и компонент вместе с ней, то все нормально, он перерисовывается. Если завести форму за край экрана и вытащить, то перерисовки не происходит (см вложение). ОС Windows 7, тема оформления Aero Glass. С классической темой все нормально. Что я не учел? Компонент класса GameMap. Код инициализации: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> import javax.swing.*; import java.awt.*; /** * Created by Alex on 29.06.2016. */ public class Main implements Runnable { @Override public void run() { MainForm form = new MainForm(); form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //form.setLayout(new BorderLayout()); GameMap map = new GameMap(); //map.setIgnoreRepaint(true); map.setDoubleBuffered(true); AbstractGameModel model = new StandartGameModel(10, 10); map.setModel(model); model.addObserver(map); map.addMouseListener(new MouseDriver()); form.addKeyListener(new KeyDriver()); /*JRootPane rootPane = form.getRootPane(); rootPane.add(map);*/ form.setLayout(new BorderLayout()); form.add(map); form.pack(); form.setBounds(0, 0, 500, 500); form.setLocationByPlatform(true); form.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Main()); } } Спасибо. ____________________.png (, : 718) |
Автор: wind 30.06.16, 18:17 |
paintComponent() переопределяют у JComponent, а не paint() ну и где сопстна компонент непонятно |
Автор: foreach 01.07.16, 04:01 |
Нашел ошибку, и переопределил уже paintComponent(). Такой эффект получается, если из объекта Graphics g пытаться получить длину и ширину компонента. g.getClipBounds().getHeight() и g.getClipBounds().getWidth() возвращают длину и ширину перерисовываемой области, а не самого компонента, и получается что изображение всего компонента ужимается в узкую полоску, на которой ничего не видно. Спасибо. |