Diskuze: KeyListener
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 25 zpráv z 25.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Ahoj mohlo by to být třeba takto :
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication9;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class JavaApplication9 {
public static JLabel lab;
public static String s = "";
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(640, 480));
frame.setFocusable(true);
lab = new JLabel();
frame.add(lab);
frame.addKeyListener(new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
System.out.println("zmackl jsi tlacitko" + e.getKeyChar());
s += String.valueOf(e.getKeyChar()).toString();
lab.setText(s);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("zmackl jsi tlacitko");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("pustil jsi klavesu" + e.getKeyChar());
}
});
frame.pack();
// TODO code application logic here
}
}
snad to pomůže
EDIT: Tomhaus zapomněl jsem ti dát odpovědět
Asi nějak takhle:
Hlavní třída:
public class Frame extends JFrame {
private GridBagConstraints g;
private Screen s;
private JPanel pan01;
public Frame(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Násobení matic");
setResizable(false);
addKeyListener(new Key());
init();
}
public void init(){
setLayout(new GridBagLayout());
g = new GridBagConstraints();
s = new Screen(); //moje vlastní třída
g.gridx = 1;
g.gridy = 0;
add(s, g);
pan01 = new JPanel(); //do tohohlepanelu mam přidaný ještě jiný komponenty, ale to není důležitý
g.gridx = 0;
g.gridy = 0;
add(pan01, g);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private class Key implements KeyListener {
public void keyPressed(KeyEvent arg0) {
System.out.println("PRESSED");
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
public static void main(String[] args){
new Frame();
}
}
podle mě to mam dobře, ale přesto mi to při zmáčknutí jakýhokoli tlačítka nic nevypisuje.
Nenastavil jsi mu focusable na true
No jo, ale když kliknu na nějaký tlačítko v tom panelu, tak to zase
nefunguje.
Focusable je nastavenej v Frame, takže ho mam přidat do každýho tlačítka,
aby se po zmáčknutí nejprve provedl úkon a pak se tlačítko jakoby
"odkliklo" (aby okolo něj nebyl ten rámeček)?
já bych řekl, že když přidam tlačítku focusable do ActionListeneru, tak se po zmáčknutí tlačítka to tlačítko jakoby odrámečkuje a že KeyListener přídávat všem komponentám není potřeba
No asi to zkusim tak jak říkáš, protože mě to jen s Focusablem nejde

mam ještě jeden dotaz a nechce se mi zakládat novou diskuzi:
když mam pole o velikosti, která se mění s jinou hodnotou, a mam v něm uložený čísla (jakýkoli, třeba do 5ti). A já potřebuju podmínku, aby se nespustila jedna metoda, když se jakýkoli číslo z toho pole bude rovnat třeba 2. Když vytořim for loop
for(int i = 0; i < pole.lenght; i++){
if(pole[i] != 2){ udelejNeco();}
}
tak se mi ta metoda provede jen pro ty hodnoty pole, které se nerovnají 2.
Poradíte někdo?
Jestli jsem tě dobře pochopil, tak tohle by ti mělo pomoct:
continue;
Skočí zpět na cyklus.
Zkus třeba toto:
public static void main(String[] args) {
int[] poleint = new int[5];
poleint[0] = 4;
poleint[1] = 2;
poleint[2] = 1;
poleint[3] = 5;
poleint[4] = 8;
for(int i : poleint){
if (i == 2){
metoda();
}
}
}
EDIT: Tomhaus promin vzdycky zapomenu dát odpovědět
já, ale potřebuju: Když se bude jakýkoli číslo z toho pole rovnat třeba číslu 2, tak aby se nespustila jiná metoda (pracuje s těmi čísli v poli) pro všechny čísla v tom poli.
tak co třeba toto :
public static void main(String[] args) {
boolean podminka = true;
int[] poleint = new int[5];
poleint[0] = 4;
poleint[1] = 2;
poleint[2] = 1;
poleint[3] = 5;
poleint[4] = 8;
for(int i : poleint){
if (i == 2){
podminka = false;
}
}
if(podminka == true){
metoda()
}
}
ještě sem zapomněl dodat, že to pole je tvořený z jiné třídy, kde
mam getter getValue()
A ten getter se rovná tomu číslu na té pozici.
Trošku sem se v tom zamotal, tak nevim.
Prosimtě zkus mně prosím trochu popsat, co v jakých třídách máš a co potřebuješ, aby to dělalo. Teď vůbec nevím. Nebo dej mi sem celý kód, a já se ti ho pokusím upravít.
přidam kód:
třída GNumbers:
public class GNumbers {
private int xCoor, yCoor, value;
public GNumbers(int xCoor, int yCoor, int value){
this.xCoor = xCoor;
this.yCoor = yCoor;
this.value = value;
}
public int getxCoor() {
return xCoor;
}
public void setxCoor(int xCoor) {
this.xCoor = xCoor;
}
public int getyCoor() {
return yCoor;
}
public void setyCoor(int yCoor) {
this.yCoor = yCoor;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
pak sem tuhle třídu vložil do pole:
private GNumbers[] ucoors;
jinde to pole nastavim:
ucoors = new GNumbers[a];
,kde to a je ta měnící se velikost pole
pak mam arraylist té třídy GNumbers:
private final ArrayList<GNumbers> uvalues = new ArrayList<GNumbers>();
a tam, kde sem to pole nastavil, taky přidávam pozicím v poli ty hodnoty v tom arraylistu:
int index = 0;
for(int i = 0; i < a; i++){
ucoors[i] = uvalues.get(index);
index++;
}
Tak snad vám to stačí 
Jinak tu otázku máte někde nad tímto příspěvkem 
Zobrazeno 25 zpráv z 25.