Это меня раздражало какое-то время, но я просто не могу понять, что я делаю неправильно. Поэтому я устанавливаю фон панели с изображением Icon, но когда я изменяю размер окна, он оставляет BG одного размера, и я получаю эту огромную белую стену вокруг открытого края, я бы хотел растянуть bg как окно измененияResize ImageIcon on window Resize
вот мой соответствующий код
protected JPanel createRightPane() {
final ImageIcon BGiconSM = ScaledImageIcon("parchmentTall.jpg", "BG Plate", initalWidth/2, initalHeight);
final ImageIcon iconSM = ScaledImageIcon("titlebar.png", "Title Bar BG", (initalWidth/3), 40);
//TODO Parchment image resize
final JPanel content = new JPanel(new GridBagLayout());
content.setOpaque(false);
final JPanel panel = new JPanel(new BorderLayout()) {
protected void paintComponent(Graphics g)
{
// Dispaly image at full size
Image BGicon = BGiconSM.getImage();
g.drawImage(BGicon, 0, 0, null);
super.paintComponent(g);
}
};
panel.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e){
Rectangle r = frame.getBounds();
int h = r.height;
int w = r.width;
if (h >= initalHeight){h = initalHeight-30;}
//System.out.println(h);
//System.out.println(w);
/* protected paintComponent(Graphics g)
{
// Dispaly image at full size
Image BGicon = BGiconSM.getImage();
g.drawImage(BGicon, 0, 0, null);
super.paintComponent(g);
}
*/
}
});
Единственная проблема, с которой я столкнулся бы с этим решением: «componentReiszed» может быть вызван несколько раз подряд, изменение размера не может быть достаточно интенсивным. Я мог бы подумать о том, что изображение с низким качеством, которое можно быстро изменить и нарисовать, и настроить Swing 'Timer' (установленный примерно на 125-250 миллисекунд), который перезапускается каждый раз« componentResized », это означает, что после (около) 125 мс после последнего вызова «componentResized» Я могу выполнить «качество» изменения размера за один шаг и перекрасить компонент, но это только я;) – MadProgrammer
да, очень правильно! я не могу найти лучший способ !!! –
Спасибо Мартину, который заставил меня на правильном пути, ультимативно я возился с ним и получил его на 90%, за исключением одного, я мог найти размер и установить его на изображение, но когда я попытался вызвать компонент краски внутри размера компонент, который сломал Eclise, дает мне ошибку на фигурных скобках, означающую, что он не переконфигурирует конец вспомогательной функции, означающей, что что-то должно быть неправильно в моих функциональных вызовах, обновит OP кодом – NekoLLX