Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2013, 20:56   #1
VanOxy
Новичок
Джуниор
 
Регистрация: 16.03.2013
Сообщений: 1
По умолчанию JAVA. Image не отрисовывается в JPanel с первого раза

Здравствуйте.
Учу Java и возникли трудности с GUI. Пытаюсь отрисовать пару картинок на JPanel. По задумке, 1-ая картинка отрисовывается сразу после инициализации всех компонентов, а вторая после щелчка мыши. И потом с каждым последующим щелчком отрисовывается то 1-ая, то 2-ая, снова 1-ая.... и т.д.
Но проблемма заключается в том, что картинка 1-ая не отрисовыается сразу(надо потянуть JFrame и сразу появляется). Со второй картинкой такая же проблемма. Но что самое интересное это то, что баг действует только при первых 2ух отривовках, а потом как по маслу... всё работает... ((
Класс фрейма
Код:
import java.awt.Toolkit;
 
import javax.swing.JFrame;
 
@SuppressWarnings("serial")
public class NewJFrame1 extends JFrame {
    
    public NewJFrame1() {
        
        setSize(Toolkit.getDefaultToolkit().getScreenSize().getSize().width - 250,
                Toolkit.getDefaultToolkit().getScreenSize().getSize().height - 30);
        
        setTitle("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        
        NewJFrame1 frame = new NewJFrame1();
        NewJPanel panel = new NewJPanel();
 
        frame.add(panel);

        setVisible(true);
    }
}
Класс панели
Код:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
 
import javax.swing.JPanel;
 
@SuppressWarnings("serial")
public class NewJPanel extends JPanel {
 
    public Image img1 = Toolkit.getDefaultToolkit().getImage("res/vazovski.jpg");
    public Image img2 = Toolkit.getDefaultToolkit().getImage("res/2.jpg");

private boolean flag = true;
 
    public NewJPanel() {
        setBackground(new Color(0, 129, 129));
        addMouseListener(new MyMouseListener());
    }
 
    public void paintComponent(Graphics g) {
 
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
 
       if (flag)
	        g2d.drawImage(img1, 50, 50, null);
       else {
		g2d.drawImage(img2, 600, 100, 350, 500, null);
	}
    }
    
    private class MyMouseListener extends MouseAdapter {
        public void mouseClicked(MouseEvent e) {
            System.out.println(e.getPoint());
            System.out.println(x);
            flag = !flag;
            repaint();
        }
    }
}
VanOxy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как вывести на JPanel, Image из массива? yazZ3va Общие вопросы по Java, Java SE, Kotlin 1 12.12.2012 12:21
Не заносятся данные в Edit с первого раза Shouldercannon Общие вопросы Delphi 2 13.04.2010 21:07
Не работает с первого раза getline AxenicX Помощь студентам 2 28.11.2009 23:43
Комп не с первого раза включается RockForr Компьютерное железо 5 18.09.2009 13:57
Неправильно отрисовывается клиентская часть окна 2XYSFJ Общие вопросы C/C++ 1 16.10.2008 12:18