Gå til innhold

focus ved oppstart av et gui


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

@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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...