Problem z obsługa klawitury

0

Kod:

public class Logowanie  extends JFrame implements ActionListener,WindowListener, KeyListener
{
  JFrame okno_logowania = new JFrame("Medicsoft CRM Logowanie:");
  JPanel panel = new JPanel();

  String sciezka_bazy="C:/CRM/bazy/";
  String sciezka_jpg="C:/CRM/bazy/";

  String aktualnie_pracujaca_osoba,haslo="";
  JPasswordField pole_haslo=new JPasswordField();
  JLabel napis_haslo=new JLabel("Podaj hasło:");

  JButton loguj = new JButton("Loguj");
  JButton obrazek = new JButton(new ImageIcon("C:/CRM/jpg/klodka.jpg"));

  final String fileName = sciezka_bazy+"pracownik.txt";
  ArrayList <Pracownik> personnel = new ArrayList<Pracownik>();
  //---------------------------------------------------------

  public Logowanie()
    {
    aktualnie_pracujaca_osoba="Grzesiek";
    //Okno okienko=new Okno(aktualnie_pracujaca_osoba);
    //-------------------------------------------------------------------------
     napis_haslo.setBounds(110,15,200,18);
     panel.add(napis_haslo);
     pole_haslo.setBounds(110,35,150,18);
     panel.add(pole_haslo);
     loguj.setBounds(110,65,150,18);
     panel.add(loguj);
     loguj.addActionListener(this);
     obrazek.setBounds(15,15,70,70);
     panel.add(obrazek);

     okno_logowania.setSize(300,140);
     okno_logowania.add(panel);
     panel.setLayout(null);                                                
     okno_logowania.setVisible(true);
     okno_logowania.setLocationRelativeTo(null);
     new AePlayWave("C:/CRM/wav/zaloguj.wav").start();
     //--------------------------------------------------------------------------------
      addKeyListener(new KeyAdapter()
       {
      public void keyReleased(KeyEvent e)
      {
       if (e.getKeyCode() == KeyEvent.VK_ENTER)
       {
       loguj();
       }

    }});


  }

    public void actionPerformed(ActionEvent evt)
    {
     Object zrodlo3 = evt.getSource();
    if(zrodlo3==loguj)
    {
     loguj();
    }}

    public void windowOpened(WindowEvent e) {  }
    public void windowClosing(WindowEvent e) { System.exit(0);  }
    public void windowClosed(WindowEvent e) { System.exit(0); }
    public void windowIconified(WindowEvent e) {   }
    public void windowDeiconified(WindowEvent e) {  }
    public void windowActivated(WindowEvent e) { }
    public void windowDeactivated(WindowEvent e) {  }


    public void loguj()
    {
     haslo=pole_haslo.getText();
        personnel = new ArrayList<Pracownik>(EmployeeListDecorator.readList(fileName));
        String[][] dane=new String[personnel.size()][2]; //wiersze, kolumny
        int stan=0;
        for (int i=0;i<personnel.size();i++)
             {
             if(haslo.equals(personnel.get(i)._haslo))
                            {
                             aktualnie_pracujaca_osoba=personnel.get(i)._imie;
                             Okno okienko=new Okno(aktualnie_pracujaca_osoba);
                             stan=1;
                            }
             }
        okno_logowania.dispose();
        if(stan==0){new AePlayWave("C:/CRM/wav/odmowa.wav").start();}


    }
  public void keyTyped(KeyEvent e) {  }
  public void keyPressed(KeyEvent e) { }
  public void keyReleased(KeyEvent e)
  {
   if (e.getKeyCode() == KeyEvent.VK_ENTER)
       {
       loguj();
       }
  }

}

Co zrobiłem zle? Chce aby po naciśnięciu przycisku ENTER podczas wyświetlania sie okna uruchomiła sie funkcja loguj();

Ale cos mi nie działa ;/

 public void keyReleased(KeyEvent e)
  {
   if (e.getKeyCode() == KeyEvent.VK_ENTER)
       {
       loguj();
       }
  }

Proszę o pomoc ;)

0

Dodales listenera do czegokolwiek?

0

No właśnie tu mam problem, nie wiem do czego go dodać. Testowałem frame.addKeyListener..., panel.addKeyListener... Ale nie działa. Nie wiem do czego mam go dodać aby zadziałało na otwartym oknie a nie np gdy mam dodany do tabelki table.addKeyListener... Jak to zrobić aby wystarczyło miec otwarte i aktywne okno??

0

Poczytaj o glass pane. To jest taki komponent ktory pokrywa calego frama, i najczesciej jest przejrzysty. Mozesz do niego dodac listenera. Musisz jescze ustawic zeby glass pane byl aktywny. W tutorialu suna do swinga poczytaj: http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html i odnosniki dotyczace glass pane.

0

Dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1