public class Test extends JFrame { private JPanel mainJPanel = new JPanel(); private JPanel bottomJPanel = new JPanel(); private JPanel leftJPanel = new JPanel(); private JPanel centerJPanel = new JPanel();
private JLabel navnJLabel = new JLabel("Navn:"); private JTextField navnJTextField = new JTextField();
private JButton okJButton = new JButton("OK"); private JButton lukJButton = new JButton("Luk");
public class Test extends JFrame { private JPanel mainJPanel = new JPanel(); private JPanel bottomJPanel = new JPanel(); private JPanel leftJPanel = new JPanel(); private JPanel centerJPanel = new JPanel();
private JLabel navnJLabel = new JLabel("Navn:"); private JTextField navnJTextField = new JTextField();
private JButton okJButton = new JButton("OK"); private JButton lukJButton = new JButton("Luk");
Jeg tror forresten ikke det er nok at have den til framen, måske skal den være på netop den komponent der er aktiv når der trykkes ESC. Men så kan du add'e den til begge (alle) men så burde man nok skille det ud i en klasse (eller metode) for sig selv for ikke at have den samme kode stående flere steder.
public class Test extends JFrame { private JPanel mainJPanel = new JPanel(); private JPanel bottomJPanel = new JPanel(); private JPanel leftJPanel = new JPanel(); private JPanel centerJPanel = new JPanel();
private JLabel navnJLabel = new JLabel("Navn:"); private JTextField navnJTextField = new JTextField();
private JButton okJButton = new JButton("OK"); private JButton lukJButton = new JButton("Luk");
} /* Dette er en metode i JFrame, som sørger for, at alle componenter * i containeren, som er tilmeldt med addKeyListener() bliver kaldt. * Denne metoder overrides, og starter med et kald til superklassen. * Derved er du sikret, at andre componenter som du har tilmeldt også * bliver kaldt. */ protected void processKeyEvent(KeyEvent e) { super.processKeyEvent( e ); if ( e.VK_ESCAPE == e.getKeyChar() ) System.exit( 0 ); }
public static void main(String[] args) { new Test(); } }
datamaker >> Jeg får det til at fungere hvis jeg har et kald til processKeyEvent(e) ved hver knap, textfield osv., men jeg håbet det skulle kunne la sig gøre med en metode som "fanger" hele JFrame. Misforstår jeg hvad du mener?
codemon >> Den sidste ser spændende ud, men jeg tror ikke jeg forstår hvad der skal gøres - gider du at forklare lidt mere?
Har du husket super kaldet? Det er ikke meningen, at du skal tilmelde textfield, knapper ovs. Kun hvis de explicit skal have funktionalitet. Det kode, som jeg har posted ovenfor, kan jeg køre. Men ellers kan du prøve at sende mig din kode.
"Det kode, som jeg har posted ovenfor, kan jeg køre." Så er jeg nødt til at gøre noget forkert, desværre, fordi det kan jeg ikke... Altså jeg kan køre den, men ESC fungerer ikke.
Beklager at jeg ikke har fået noget gjort med dette spm. - et par eksamener har taget det meste af min tid i det sidste. Nu rejser jeg hjem (til Norge) i morgen, og regner med at kunne kigge på dette i weekenden eller neste uge.
Nu har jeg endelig haft tid til at kigge lidt grundig på tingene.
Jeg er ked af det, men jeg får ingen af løsningerne til at fungere rigtigt. Det ser ud for at jeg bliver nødt for at have en KeyListener på hvert komponent... :-(
På trods af ekstra hjælp fra datamaker via mail, har jeg ikke fået det til at fungere helt som jeg ville. Jeg har alligevel fået nogle idéer som jeg selv kan rode lidt mere med.
Mange tak for hjælp, begge.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.