lilfire Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 Hei jeg sliter litt med å forstå hva som får focus når programmet starter. programet skal kunne brukes uten mus og derfor må man kunne navigere seg rundt med tastaturet. sånn det er nå må man trykket på en radioknapp for at de skal få focus og da fungerer keylisteneren. jeg vil slippe å måtte trykke med musa. hvordan får jeg til det? package movieTime; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import javax.swing.ImageIcon; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; public class ChoosePic extends JFrame{ private JButton[] bilder; private String[] pic; private JRadioButton[] bildevelger; public ChoosePic(String[] pic) throws IOException{ System.out.println("********************************"); setLayout(new BorderLayout()); int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); setBackground(new Color(255,255,255)); this.setBounds(0, 0, screenWidth, screenHeight); setUndecorated(true); bildevelger = new JRadioButton[pic.length]; bilder = new JButton[pic.length]; this.pic = pic; Top panel = new Top(); add(panel, BorderLayout.NORTH); } private class Top extends JPanel{ public Top(){ setLayout(new GridLayout(2, 1)); add(new Images()); add(new ImagesVelger()); } } private class Images extends JPanel{ public Images(){ for(int i = 0; i < pic.length; i++){ bilder[i] = new JButton(); ImageIcon icon = new ImageIcon(pic[i]); bilder[i].setPreferredSize(new Dimension(icon.getIconWidth(), icon.getIconHeight())); bilder[i].setIcon(icon); add(bilder[i]); } } } private class ImagesVelger extends JPanel{ public ImagesVelger(){ this.setPreferredSize(new Dimension(900, 100)); ButtonGroup gruppe = new ButtonGroup(); ImagesVelgerListener key = new ImagesVelgerListener(); for (int i = 0; i < pic.length; i++){ boolean selected = (i == 0); bildevelger[i] = new JRadioButton("", selected); gruppe.add(bildevelger[i]); add(bildevelger[i]); bildevelger[i].addKeyListener(key); } } } private class ImagesVelgerListener implements KeyListener{ public void keyPressed(KeyEvent e){ int key = -1; if(e.getKeyCode() == 37)key = 1; //venster else if(e.getKeyCode() == 39)key = 2; //høyere else key = -1; if(key == 1){ for (int i = 0; i < bildevelger.length; i++){ if (bildevelger[i].isSelected()){ if(i-1 > -1){ bildevelger[i].setSelected(false); bildevelger[i-1].setSelected(true); System.out.println("venstere"); break; }else{ bildevelger[i].setSelected(false); bildevelger[bildevelger.length -1].setSelected(true); System.out.println("venstere"); break; } } } }else if(key == 2){ for (int i = 0; i < bildevelger.length; i++){ if (bildevelger[i].isSelected()){ if(i+1 < bildevelger.length){ bildevelger[i].setSelected(false); bildevelger[i+1].setSelected(true); System.out.println("høyere"); break; }else{ bildevelger[i].setSelected(false); bildevelger[0].setSelected(true); System.out.println("høyere"); break; } } } }else{ System.out.println("ukjent key, key code: " + e.getKeyCode()); } } public void keyReleased(KeyEvent arg0) {} public void keyTyped(KeyEvent arg0) {} } } MVH Lilfire Lenke til kommentar
TeisL Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 Hei, en stund siden jeg nå har programmert java aktivt, men du kan styre selv hva som skal være i fokus når man starter applikasjonen. Her finner du alt du trenger å vite om java, http://java.sun.com/javase/6/docs/api/. Hvis du går på java.awt.event, så ser du det er noe som heter focuslistener. Ellers mener jeg det er mulig å ta navnet på radiobuttonen.setFokus(). Er litt usikker på den siste, om det var sånn det gjøres. Lykke til Lenke til kommentar
lilfire Skrevet 17. mai 2009 Forfatter Del Skrevet 17. mai 2009 har tita gjennom api og google litt . har også prøvd requestFocus(), men uten hel. Lenke til kommentar
Shruggie Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 Jeg har lekt en del med Swing, og det slår meg at det er et _veldig_ musfokusert rammeverk. Det er mulig du kommer lenger med ren AWT eller SWT, men jeg har ikke lekt nok med de til å vite det sikkert. Alternativt er det MASSEVIS av opensource rammeverk med bindinger til Java som du kan bruke, og her er det helt sikkert noen som er laget spesielt for tastaturnavigering. Lenke til kommentar
Cyberfrog Skrevet 17. mai 2009 Del Skrevet 17. mai 2009 Prøvd requestFocusInWindow() ? Se også: http://java.sun.com/docs/books/tutorial/ui...misc/focus.html Lenke til kommentar
lilfire Skrevet 18. mai 2009 Forfatter Del Skrevet 18. mai 2009 @tofagerl hmm, du har har kanskje rett. joa kan sikkert lette etter et ramme verk, men er mye mer morro å prøve å ordne ting selv:P men kan jo titte litt på det. @Cyberfrog har prøvd det å har også titta innom den siden du referer til men jeg ble ikke mye klokkere på noe løsning. Lenke til kommentar
LostOblivion Skrevet 18. mai 2009 Del Skrevet 18. mai 2009 Slenger meg på her jeg. Finnes det noe .NET API for Java? Lenke til kommentar
lilfire Skrevet 20. mai 2009 Forfatter Del Skrevet 20. mai 2009 jeg fik fiksa det på en litt sær måte, uansett hva jeg prøvde på fikk jeg ikke bestemt hva som skulle ha fokus ved oppstart. men jeg la til en keylistener på det objectet som fikk focus ved start. og ba keylistener sette focus dit jeg ville når en tast ble trykket. ellers takk for hjelpen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå