
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.170.18] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Есть свой компонент Swing, наследник JComponent с переопределенным методом paint(). Компонент во всю форму JFrame. Если ресайзить форму, а значит и компонент вместе с ней, то все нормально, он перерисовывается. Если завести форму за край экрана и вытащить, то перерисовки не происходит (см вложение). ОС Windows 7, тема оформления Aero Glass. С классической темой все нормально. Что я не учел? Компонент класса GameMap. Код инициализации: ![]() ![]() 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()); } } Спасибо. Прикреплённая картинка
|
![]() |
Сообщ.
#2
,
|
|
paintComponent() переопределяют у JComponent, а не paint()
ну и где сопстна компонент непонятно |
Сообщ.
#3
,
|
|
|
Нашел ошибку, и переопределил уже paintComponent().
Такой эффект получается, если из объекта Graphics g пытаться получить длину и ширину компонента. g.getClipBounds().getHeight() и g.getClipBounds().getWidth() возвращают длину и ширину перерисовываемой области, а не самого компонента, и получается что изображение всего компонента ужимается в узкую полоску, на которой ничего не видно. Спасибо. |