G
Guest
Gast
Wie schon viele andere hab ich jetzt auch Probleme mit dem setzen des Focus.
hier mal ein bisschen Code:
Das Spielfeld:
Hier das Sorgenkind:
Mein Problem ist das der MouseWheelListener erst greift wenn ich auf irgend einen Button, Slider, etc geklickt hab.
Da der Slider aber nur meine "mein Laptop hat gar kein MouseWheel"-Lösung ist würd ich gern für alle anderen Spieler das ganze benutzerfreundlich machen.
Hier nun die Frage: wie wird wann wo warum der Focus hinversteckt? Ich mein Java wird den ja nicht spontan unter den Tisch fallen lassen?
P.S.: Ja, ich weiss, das mit dem TuffPanel ist ne blöde Idee, aber als Workarround gehts. Ist zwar nur ein kleineres Randproblem, aber wenn da jemand wüsst warum das so ist immer her mmit dem Wissen .-)
thx schonmal
hier mal ein bisschen Code:
Das Spielfeld:
Code:
public GamePanel(Gui gui, Grid g, ImagedTurningCharacter imgchar, ServerInterface si) {
setLayout(null);
grid=g;
serverinterface=si;
imagedcharacter=imgchar;
pingstart_sysmillis=System.currentTimeMillis();
latenz=0;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
backgroundimage = gc.createCompatibleVolatileImage(1000, 800);
worldimage = gc.createCompatibleVolatileImage(window_width, window_height);
wassersegment=Statics.getImage("C:/home/workspace/BloodSeaClient/images/200x200.gif");
addMouseWheelListener(getMouseWheelListener());
addMouseMotionListener(getMouseMotionListener());
addMouseListener(getMapListener());
tempwindows=new Vector<TemporaryWindow>();
menupanel=new MenuePanel(this, 800,20);
add(menupanel);
menupanel.setBounds(0, 0, 800, 20);
systempanel=new SystemPanel(this);
systempanel.s1.setValue(systempanel.s1.getMinimum());
//Dass hier ist fast schon ein Scherz...
//ohne dieses Panel werden keine geaddeten
//Panels angezeigt... zum anzeigten tuff
//sichtbar / unsichtbar machen schon gehts
//----------------------------------------
tuffpan=new JPanel();
Statics.setSize(tuffpan, 1, 1);
tuffpan.setBounds(1,1,1,1);
add(tuffpan);
tuffpan.setVisible(false);
zoom();
th = new Thread(this);
th.start();
if(imagedcharacter.getDockedAt()!=null){
showIslePanel();//
}
setVisible(true);
requestFocus();
}
Hier das Sorgenkind:
Code:
private MouseWheelListener getMouseWheelListener(){
MouseWheelListener mw=new MouseWheelListener(){
public void mouseWheelMoved(MouseWheelEvent arg0) {
int count = arg0.getWheelRotation();
if(count < 0){
if(systempanel.s1.getValue()<=95){
systempanel.s1.setValue(systempanel.s1.getValue()+5);
}else{
systempanel.s1.setValue(100);
}
}else{
if(systempanel.s1.getValue()>=30){
systempanel.s1.setValue(systempanel.s1.getValue()-5);
}else{
systempanel.s1.setValue(25);
}
}
}
};
return mw;
}
Mein Problem ist das der MouseWheelListener erst greift wenn ich auf irgend einen Button, Slider, etc geklickt hab.
Da der Slider aber nur meine "mein Laptop hat gar kein MouseWheel"-Lösung ist würd ich gern für alle anderen Spieler das ganze benutzerfreundlich machen.
Hier nun die Frage: wie wird wann wo warum der Focus hinversteckt? Ich mein Java wird den ja nicht spontan unter den Tisch fallen lassen?
P.S.: Ja, ich weiss, das mit dem TuffPanel ist ne blöde Idee, aber als Workarround gehts. Ist zwar nur ein kleineres Randproblem, aber wenn da jemand wüsst warum das so ist immer her mmit dem Wissen .-)
thx schonmal