проблема с KeyListener

Статус: Offline
Реєстрація: 26.09.2008
Повідом.: 101
проблема с KeyListener

Всем привет.
Вот есть кусок кода:

package Main;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class CreateWin extends JFrame implements KeyListener{
private static final long serialVersionUID = 1L;

JFrame jfrm = new JFrame();
JLabel jlab = new JLabel("Hellow");

public CreateWin(){
jfrm.setSize(800, 600);
jfrm.setDefaultCloseOperation(JFram e.EXIT_ON_CLOSE);

jfrm.addKeyListener(this);

jfrm.setVisible(true);

}

public void keyPressed(KeyEvent e) {
jfrm.add(jlab);
repaint();
}
}

вот собственно метод main:

import javax.swing.SwingUtilities;

public class Start {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new CreateWin();
}
});

}

}

Может кто знает как сделать так, что бы при нажатии пробела выводилась метка jlab.
 
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Тільки зареєстровані користувачі бачать весь контент у цьому розділі


Код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CreateWin extends JFrame implements KeyListener {
    // объект создается в конструкторе и доступен по this или CreateWin.this
    //? JFrame jfrm = new JFrame();
    JLabel jlab = new JLabel("Hellow");

    public CreateWin() {
        this.setSize(800, 600);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //слушатель на все компонеты фрейма, если таковые имеются
        addKeyListenerToAll(this);
        //слушатель на сам фрейм
        addKeyListener(this);
    }

    private void addKeyListenerToAll(Component c){
        if(c instanceof Container){
            for(Component component : ((Container) c).getComponents()){
                addKeyListenerToAll(component);
            }
        }else{
            c.addKeyListener(this);
        }
    }

    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_SPACE) {
            this.getContentPane().add(jlab);
            //repaint();    этот метод не перерисовывает JFrame, лучше так:
            CreateWin.this.invalidate();
            validate();
        }
    }

    public void keyTyped(KeyEvent e) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void keyReleased(KeyEvent e) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CreateWin().setVisible(true);
            }
        });
    }
}
 
Спс за код. С небольшим редактированием получил то, что хотел.
 
Назад
Зверху Знизу