|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.11.2010, 20:41 | #1 |
Регистрация: 16.11.2010
Сообщений: 7
|
JPanel объясните
Не могу понять как работает перерисовка. Основная суть - запустить окно и нарисовать картинку, а при нажатии изменить картинку на другую. Написал вот таких два класса, при запуске все нормально рисуется, а при нажатии нет никаких действий вообще.
Вот собственно быдлокод ;-): Код HTML:
package main; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Menu extends JPanel{ private static final long serialVersionUID = 1L; public static final int WIDTH_BACK_GROUND = 0; public static final int HEIGHT_BACK_GROUND = 0; private Image backGround; private Image start, startSelect; Menu(){ try{ backGround = ImageIO.read(new File("BackGround.jpg")); start = ImageIO.read(new File("Start.gif")); startSelect = ImageIO.read(new File("StartSelect.gif")); } catch (IOException e){ e.printStackTrace(); } final ButtonMenu buttonStart = new ButtonMenu(start, startSelect, true); setLayout(null); buttonStart.setBounds(80, 80, 150, 20); add(buttonStart); addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub if (e.getKeyCode() == KeyEvent.VK_UP){ buttonStart.selectVisible(false); buttonStart.repaint(); repaint(); } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } }); setSize(800, 600); setVisible(true); } public void paintComponent(Graphics g){ super.paintComponents(g); g.drawImage(backGround, WIDTH_BACK_GROUND, HEIGHT_BACK_GROUND, null); } } Код HTML:
package main; import java.awt.Component; import java.awt.Graphics; import java.awt.Image; public class ButtonMenu extends Component{ private static final long serialVersionUID = 1L; private Image image1; private Image image2; private boolean visible; public ButtonMenu(Image image1, Image image2, boolean visible){ this.image1 = image1; this.image2 = image2; this.visible = visible; } public void paint(Graphics g){ if (visible == true){ g.drawImage(image1, 0, 0, null); } else { g.drawImage(image2, 0, 0, null); } } public void selectVisible(boolean select){ this.visible = select; } } Код HTML:
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run(){ new Menu(); } } } P.S. Вроде говорят, что KeyListener нужно добавлять ко всем компонентам, тогда какая то охинея получается. Не могу понять тогда как он работать будет. Если у кого есть код решающий такую проблему буду рад если дадите глянуть.
Лишь тот достоин жизни и свободы, кто каждый день за них идет на бой... И. В. Гете
Последний раз редактировалось Sasha9132; 30.11.2010 в 09:40. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
JPanel | grimm_jow | Общие вопросы по Java, Java SE, Kotlin | 6 | 30.11.2010 18:59 |
Jpanel в JscrollPane | Jakethefish | Общие вопросы по Java, Java SE, Kotlin | 0 | 15.11.2010 14:25 |
Использование метода repaint() объекта класса JPanel | Alexcomeback | Общие вопросы по Java, Java SE, Kotlin | 1 | 31.10.2010 13:12 |
Объясните | Alexsssandr | Помощь студентам | 2 | 17.02.2010 20:50 |
Объясните | Sergo(1) | Помощь студентам | 2 | 10.05.2009 22:46 |