Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
frenky.picasso:2.12.2013 18:01

Ahoj,
chtěl bych se zeptat, jak dostanu po stisknutí na grafický objekt(třeba jPanel nebo jButton) nějaký jeho konkrétní parametr.. např jméno nebo cislo ktere jsem mu nastavil... vím že v C# existuje něco jako "Tag".

Př.

private void jPanel1MouseClic­ked(java.awt.e­vent.MouseEvent evt) {

JOptionPane.show­MessageDialog(nu­ll, ??? );

}

Děkuju moc za radu.

 
Odpovědět
2.12.2013 18:01
Avatar
Silvinios
Tvůrce
Avatar
Silvinios:2.12.2013 20:19

Nestačilo by ti získat objekt, na kterém událost nastala pomocí

EventObject.getSource()

, a z něj vytáhnout, co potřebuješ?

 
Nahoru Odpovědět
2.12.2013 20:19
Avatar
Odpovídá na Silvinios
frenky.picasso:2.12.2013 20:40

Mohl bys prosím nějak konkrétněji? :)
když dám "evt.getSource", tak se mi zobrazí přímo ten panel v tom okne se vším všudy, ale jak mám udělat to, aby se mi zobrazil náký parametr, který k tomu jPanel1 přidám... a po klinutí na něj zobrazil? Nebo název toho jPanel1.. Zkoušel jsem "getID", ale nevím co ID je a kde bych ho popřípadě mohl nastavit.
díky

 
Nahoru Odpovědět
2.12.2013 20:40
Avatar
Odpovídá na frenky.picasso
frenky.picasso:2.12.2013 20:44

dělám totiž člověče nezlob se a těch panelů tam mám celkem dost pod jednou funkcí jPanel1MouseClic­ked. a já potřebuju, že když kliknu na nějaký panel, tak musim vědět na jaký klikám abych zrovna té figurce mohl přidat hodnotu...

 
Nahoru Odpovědět
2.12.2013 20:44
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na frenky.picasso
Silvinios:2.12.2013 21:34

Jasně, už chápu.

Myslel jsem to tak, že by sis udělal vlastní panel, potomka JPanel, který by navíc obsahoval vše, co potřebuješ.

Nebo můžeš použít metody JComponent.put­ClientProperty a Component.get­ClientProperty, což je asi to, co jsi původně chtěl.

public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.setBackground(Color.RED);
        frame.getContentPane().add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setMinimumSize(new Dimension(320, 240));
        frame.setVisible(true);

        panel.putClientProperty("mujParametr", 20);
        panel.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent e) {
                JComponent source = (JComponent) e.getSource();
                Integer hodnota = (Integer) source.getClientProperty("mujParametr");
                System.out.println(hodnota);
            }

        });
    }
 
Nahoru Odpovědět
2.12.2013 21:34
Avatar
Odpovídá na Silvinios
frenky.picasso:2.12.2013 22:19

jo moc díky! funguje :) a jak by se dalo co nejlépe z pohledu codéra napsat to "putClientProperty" pro 60jPanelů? zkoušel jsem v Neatbeans v tom deign prostředí najít, abych si to tam moch nsatavit a nemusl to mít takhle v kodu ale není to tam... :)
Ještě jednou dík za pomoct!

 
Nahoru Odpovědět
2.12.2013 22:19
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na frenky.picasso
Silvinios:2.12.2013 22:42

Pokud to nejde, asi bych použil Post-Creation v záložce Code v okně Properties (Ctrl+Shift+7).

 
Nahoru Odpovědět
2.12.2013 22:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.