Questo codice funziona in tutti i modi, ma ora non si chiude completamente, sembra bloccarsi mentre colpisco la "X" sulla finestra. Dopo aver colpito vicino, se minimizzo lo schermo e poi lo ingrandisco, è solo nero. L'unico modo per farla chiudere completamente è uscire da Eclipse, il mio IDE.Jframe non si chiude su "X"
Prima di questo ho avuto un aspetto diverso. Ho rubato del codice per la GUI, l'ho fatto in netbeans per farlo sembrare migliore di quanto potessi fare a mano. Quindi immagino che abbia a che fare con l'aspetto "nimbus", ma forse non sto chiudendo correttamente altri oggetti e ora è un problema?
static CLUtilCompact app = null; // this
static AuxPPanel aux = null; // JPanel
static StatusPanel stat = null; // JPanel
static UserActPanel user = null; // JPanel
static InputPanel input = null; // JPanel
static Automator auto = null;
//public class Automator extends Thread
// implements NativeMouseInputListener, NativeKeyListener
public CLUtilCompact()
{
aux = new AuxPPanel();
stat = new StatusPanel();
user = new UserActPanel();
auto = new Automator();
input = new InputPanel();
GlobalScreen.getInstance().addNativeKeyListener(auto);
GlobalScreen.getInstance().addNativeMouseListener(auto);
GlobalScreen.getInstance().addNativeMouseMotionListener(auto);
auto.start();
}
public static void main(String[] args)
{
// Create the App, and panels
app = new CLUtilCompact();
// Let the panels have access to app now
aux.setApp(app);
stat.setApp(app);
user.setApp(app);
auto.setApp(app);
app.updateOutput("Started");
app.updateStatus("Started");
input.setApp(app);
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(CLUtilCompact.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(CLUtilCompact.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(CLUtilCompact.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(CLUtilCompact.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
app.setDefaultCloseOperation(EXIT_ON_CLOSE);
app.setAlwaysOnTop(true);
app.setVisible(true);
}
});
}
Classe Automator corsa e vicino
public void run()
{
try // to make the Global hook
{
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex){theApp.updateOutput("No Global Keyboard or Mouse Hook");return;}
try // to create a robot (can simulate user input such as mouse and keyboard input)
{
rob = new Robot();
}
catch (AWTException e1) {theApp.updateOutput("The Robot could not be created");return;}
while(true) {}
}
public void OnClose()
{
GlobalScreen.unregisterNativeHook();
}
EDIT: La piccola scatola rossa in eclissi lo chiude, ma ancora di per sé non è così. vicino azione "DISPOSE_ON_CLOSE" invece di EXIT_ON_CLOSE (suggerimento generale)
Hovercraft pieno di anguille commento
Che dire quando si preme il 'X' nella console Eclipse? – CodyBugstein
Non sai cosa intendi, intendi letteralmente quando chiudo Eclipse? Si spegne e il programma si chiude completamente. Il problema è quando lo ho come un file .jar eseguibile, non c'è modo di chiuderlo. Non viene nemmeno visualizzato nel task manager. –
Voglio dire [QUESTO] (http://imgur.com/7QWidY2) piccolo 'X' – CodyBugstein