Hi Leutz.
Habe diese Frage schon mal in nem anderen Forum gestellt, leider konnte mir bis jetzt niemand helfen.
Ich hab nen Menu Explorer, d.H es ist ein JInternalFrame auf nem JDesktopPane das rein und raus fährt.
Dies soll wenn man über dieses Fenster geht rein und wieder raus gefahren werden.
Leider habe ich das Problem das wenn ich über einen Button auf diesem Fenster fahre dieses auch zugeht(klar, weil ich "verlasse" ja das Fenster.
Es über das DesktopPane zu machen geht nicht, denn wenn ein weiteres InternalFrame geöffnet ist betrete ich dieses ja nicht..
Lange rede kurzer sinn.. Hier mal ein Ausführbares Programm damit Ihr wisst was ich meine..
Ausserdem hab ich bei nem langsameren Rechner das Problem das der Explorer zu langsam rein fährt und ich diesen dazwischen verlassen kann.. heisst er würde gleichzeitig rein UND raus fahren.. sieht bisschen komisch aus, wird aber warscheinlich keiner nachvollziehen können
Hoffe jemand kann mir helfen!
gruss
MScalli
Habe diese Frage schon mal in nem anderen Forum gestellt, leider konnte mir bis jetzt niemand helfen.
Ich hab nen Menu Explorer, d.H es ist ein JInternalFrame auf nem JDesktopPane das rein und raus fährt.
Dies soll wenn man über dieses Fenster geht rein und wieder raus gefahren werden.
Leider habe ich das Problem das wenn ich über einen Button auf diesem Fenster fahre dieses auch zugeht(klar, weil ich "verlasse" ja das Fenster.
Es über das DesktopPane zu machen geht nicht, denn wenn ein weiteres InternalFrame geöffnet ist betrete ich dieses ja nicht..
Lange rede kurzer sinn.. Hier mal ein Ausführbares Programm damit Ihr wisst was ich meine..
Code:
import java.awt.Container;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.plaf.basic.BasicInternalFrameUI;
public class TestMenuExplorer {
public static JDesktopPane desktop;
static JInternalFrame iFrame;
JFrame frame;
static boolean ueber_button = true;
static boolean offen = true;
TestMenuExplorer(){
frame = new JFrame();
frame.setSize(500,500);
desktop = new JDesktopPane();
iFrame = new JInternalFrame("Frame 1");
iFrame.setLayout(null);
// Kopf des Fensters soll nicht angezeigt werden
BasicInternalFrameUI ui = (BasicInternalFrameUI) iFrame.getUI();
ui.setNorthPane(null);
iFrame.addMouseListener(new MouseListener(){
@Override
public void mouseEntered(MouseEvent arg0) {
menuAusfahren(desktop);
}
@Override
public void mouseExited(MouseEvent arg0) {
menuEinfahren(desktop);
}
@Override
public void mouseClicked(MouseEvent arg0) { }
@Override
public void mousePressed(MouseEvent arg0) { }
@Override
public void mouseReleased(MouseEvent arg0) { }
});
JButton btn = new JButton("test");
btn.setBounds(0,0,200,25);
iFrame.add(btn);
iFrame.setBounds(0,0,200, 500);
iFrame.setVisible(true);
desktop.add(iFrame);
frame.add(desktop);
frame.setVisible(true);
}
public static void menuEinfahren(final Container desktop){
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(new Runnable(){
public void run(){
for (int i = 0; i > -iFrame.getWidth()+15; i--){
iFrame.setLocation(i, 0);
try{
Thread.sleep(0);
} catch (InterruptedException e){
e.printStackTrace();
}
desktop.repaint();
}
}
});
}// ENDE menuEinfahren
public static void menuAusfahren(final Container desktop){
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(new Runnable(){
public void run(){
for (int i = -iFrame.getWidth()+15; i < 0; i++){
iFrame.setLocation(i, 0);
try{
Thread.sleep(0);
} catch (InterruptedException e){
e.printStackTrace();
}
desktop.repaint();
}
}
});
}// ENDE menuAusfahren
public static void main(String[] args) {
new TestMenuExplorer();
}
}
Ausserdem hab ich bei nem langsameren Rechner das Problem das der Explorer zu langsam rein fährt und ich diesen dazwischen verlassen kann.. heisst er würde gleichzeitig rein UND raus fahren.. sieht bisschen komisch aus, wird aber warscheinlich keiner nachvollziehen können
Hoffe jemand kann mir helfen!
gruss
MScalli