[ karas @ 07.11.2004. 17:49 ] @
Ne mogu nikako da registrujem KeyEvent u JComboBox:

Code:

jComboBox1.addKeyListener(new KeyAdapter()
{
  public void keyReleased(KeyEvent evt)
  {
    System.out.println("Hello, World!");
  }
}


I kada se pritisne bilo koji taster nishta se ne deshava!? U chemu je problem?
[ veljaradenkovic @ 07.11.2004. 18:39 ] @
Pazi moze da ne radi jedino ako ti fokus nije na jComboBox1 sto je u tom slucaju normalno.

Probaj klikni jedanput na jComboBox1 pa ga zatvori i onda kuckaj nesto po tastaturi.
[ karas @ 07.11.2004. 21:49 ] @
Necce.
[ veljaradenkovic @ 07.11.2004. 22:30 ] @
Kako 'necce'.

Code:

import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * @author Velja Radenkovic
 * class: MainForm
 * package:
 */
public class MainForm extends JFrame{

    /*
     * Private fields
     */
    private JPanel mainPanel;
    private JComboBox combo;
    private JButton button;

    /**
     * Default constructor
     */
    public MainForm(){this.initalize();}

    //
    //Entry point
    //
    public static void main(String[] args)
    {
        System.out.println("Program started!");
        MainForm mainFrm = new MainForm();
        mainFrm.pack();
        mainFrm.setSize(800, 600);
        mainFrm.setVisible(true);
    }

    /*
     * Initalize ui
     */
    private void initalize()
    {
        this.setContentPane(this.getMainPanel());
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    /*
     * gets the mainPanel
     */
    private JPanel getMainPanel()
    {
        if(this.mainPanel == null)
        {
            this.mainPanel = new JPanel();
            this.mainPanel.setLayout(new BorderLayout(10, 10));
            this.mainPanel.add(this.getCombo(), BorderLayout.NORTH);
            this.mainPanel.add(this.getButton(), BorderLayout.CENTER);
        }
        return this.mainPanel;
    }

    /*
     * gets the combo
     */
    private JComboBox getCombo()
    {
        if(this.combo == null)
        {
            this.combo = new JComboBox();
            this.combo.addItem("Stavka jedan");
            this.combo.addItem("Stavka dva");
            this.combo.addKeyListener(new KeyAdapter() {


                public void keyReleased(KeyEvent e) {
                    System.out.println("Key released!");
                }


            });
        }
        return this.combo;
    }

    /*
     *
     */
    private JButton getButton()
    {
        if(this.button == null)
        {
            this.button = new JButton("Klikni me klikni");
        }
        return this.button;
    }
}



Kazi kad 'oce' da maknem nepotreban deo koda.
[ karas @ 08.11.2004. 09:29 ] @
Necce. Mozze preko TAB-a da se prebacuje fokus i preko SPACE-a da se odabere
stavka ali na ostale tastere ne reaguje.
Inache, koristim JDK 1.3.1_09 za Linux, ako to neshto znachi.
[ range @ 09.11.2004. 10:36 ] @
E ja mislim da je to bug! Ja sam imao istih problema dok sam koristio 1.3.1 verziju i to na linux-u i nije postojalo resenje. Imam ovde negde post od pre par godina na tu temu, ali niko nije odgovorio
[ dinke @ 09.11.2004. 22:47 ] @
Kod mene na JDK1.4.2 (linux) ovaj Veljin primer radi, tj. izbacuje "Key released!" u konzoli kada je bilo koji taster pritisnut (osim kad comboBox nije u fokusu).

Koliko se ja sećam *mislim* da je trik u tome da implementiraš KeyListener interfejs, on ima samo 3 metoda koja moraš da koristiš:

keyPressed(KeyEvent e)
keyReleased(KeyEvent e)
keyTyped(KeyEvent e)

i naravno staviš
na vrhu

import java.awt.event.*;

a kod klase:

public class MainForm extends JFrame implements KeyListener ...

Pogledaj JDK manual ili ovaj tutorijal za više informacija.
[ karas @ 10.11.2004. 06:54 ] @
Probao sam sa kodom koji generishe NetBeans i sve komponente lepo rade osim JComboBox. Koristio sam i KeyListener i KeyAdapter ali necce. Ipak je greshka njihova.