Глобальные переменные keylistener - Java
Формулировка задачи:
Здравствуйте! нужна программа которая при нажатии клавиши меняет значение параметра drawstring. Объявил глобальную переменную DataClass.Path. Прога скомпилировалась, а значение параметра при нажатии клавиш "d" и "a" не меняется. Что делать? код ниже
package my3000;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
import java.awt.event.*;
/**
*
* @author maxim
*/
public class My3000 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DataClass.path="aaaaa";
System.out.println("dcwdc");
MyFrame frame = new MyFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
frame.addKeyListener(new KeyListener() {
@SuppressWarnings("empty-statement")
public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
{
char c;
c = ke.getKeyChar();
switch (c){
case 'a' : DataClass.path="bbbbb";
break;
case 'd' : DataClass.path="ccccc";
break;
}
}
public void keyPressed(KeyEvent ke) {}
public void keyReleased(KeyEvent ke) {}
});
// TODO code application logic here
}
}
class MyFrame extends JFrame
{
public MyFrame()
{
setTitle("MainFraim");
setSize(300,200);
MyPanel panel = new MyPanel();
Container pane=getContentPane();
pane.add(panel);
}
}
class MyPanel extends JPanel
{
private Image im;
public MyPanel()
{
try
{
im=ImageIO.read(new File(DataClass.path));
}
catch (IOException exception)
{}
}
public void paintComponent (Graphics g)
{
super.paintComponent(g);
// g.drawImage(im,22,22,null);
g.drawString(DataClass.path, 12, 12);
}
}Решение задачи: «Глобальные переменные keylistener»
textual
Листинг программы
public class My3000 {
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
DataClass.path = "aaaaa";
System.out.println("dcwdc");
MyFrame frame = new MyFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.addKeyListener(new KeyListener() {
@SuppressWarnings("empty-statement")
public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
{
char c;
c = ke.getKeyChar();
System.out.println("Get key char: " + c);
switch (c) {
case 'a':
DataClass.path = "bbbbb";
break;
case 'd':
DataClass.path = "ccccc";
break;
}
}
public void keyPressed(KeyEvent ke) {
}
public void keyReleased(KeyEvent ke) {
}
});
// TODO code application logic here
}
}
class MyFrame extends JFrame {
public MyFrame() {
setTitle("MainFraim");
setSize(300, 200);
MyPanel panel = new MyPanel();
Container pane = getContentPane();
pane.add(panel);
}
}
class DataClass {
public static String path;
}
class MyPanel extends JPanel {
private Image im;
public MyPanel() {
try {
im = ImageIO.read(new File(DataClass.path));
} catch (IOException exception) {
}
}
public void paintComponent (Graphics g) {
super.paintComponent(g);
// g.drawImage(im,22,22,null);
g.drawString(DataClass.path, 12, 12);
setSize(100,50);
repaint();
}
}