Salve a tutti, sto sviluppando un'applicazione di draw e mi è nata l'esigenza di fare una modlità presentazione a tutto schermo. Ho risolto scrivendo il codice che posterò qui sotto con cui metto in full screen il JPanel desk piu un pannello con un bottone per uscire dalla modalità. Tutto questo sembra funzionare perfettamente quando uso il tasto run da netbeans (che usa jdk ufficiale..almeno penso) e anche sulla mia macchina con windows 7 e il jdk ufficiale. Il problema nasce quando lo eseguo (sempre su stessa macchina e os con cui programmo con netbeans) con l'openJDK 6 o 7. Infattila barra di sistema viene visualizzata anche in mdalità full screen e il pannello viene abbassato di tanti pixel quanti la barra di sistema, nascondendo quindi parzialmente il bottone esc. C'è qualcosa che sbaglio io o é solo il jdk sballato? In qualsiasi caso c'è rimedio per farlo andare con openJDK?

Vi ringrazio già per le risposte. Ciao ciao.

P.S.: Il mio os è ubuntu 12.04

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class FullScreen extends Window {

private JButton esc;
private JPanel contentPane;
private JPanel controlPanel;
private Desk desk;
public static int JUST_EXITED_FULL_SCREEN = 0;
public static int FULL_SCREEN_ON = 1;
public static int FULL_SCREEN_OFF = 2;

public FullScreen(Desk desk) {
super(new JFrame());
this.desk = desk;

desk.setFullScreenStatus(FullScreen.FULL_SCREEN_ON );

createAndShowGUI();
this.add(contentPane);
manageEvents();

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setBounds(0, 0, screenSize.width, screenSize.height);
this.setVisible(true);
}

private void createAndShowGUI() {
contentPane = new JPanel();
controlPanel = new JPanel();
esc = new JButton("Close");

contentPane.setLayout(new BorderLayout());
controlPanel.add(esc);
controlPanel.setBorder(BorderFactory.createLineBor der(Color.BLACK));
contentPane.add(desk, BorderLayout.CENTER);
contentPane.add(controlPanel, BorderLayout.SOUTH);
}

private void manageEvents() {
esc.setActionCommand("esc");

ActionListener events = new FullScreenEvents();

esc.addActionListener(events);
}

class FullScreenEvents implements ActionListener {

String action;

@Override
public void actionPerformed(ActionEvent e) {
action = e.getActionCommand();

if ("esc".equals(action)) {
dispose();
desk.setFullScreenStatus(JUST_EXITED_FULL_SCREEN);
}
}
}
}