मैं JavaFX यूआई का उपयोग कर एक सरल अनुप्रयोग बनाना रहा हूँ, एप्लिकेशन बस बस यही काम:JavaFX एप्लिकेशन
- एक systray आइकन है, जो जब क्लिक एक खिड़की, जब फिर से क्लिक किया यह खाल से पता चलता है, पर rightclick 1 'प्रस्थान' आइटम
मैं पहले से ही यूआई बनाया और Sys ट्रे में ऐप डाल के साथ एक मेनू से पता चलता है, लेकिन मैं इसे छिपाने नहीं दिखा सकते हैं/सामान्य ActionListener विधि का उपयोग कर, लेकिन मैं यह त्रुटि आई:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0
यहाँ कोड है:
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionListener;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!"); }
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("Germany-politcal-map.jpg");
PopupMenu popup = new PopupMenu();
MenuItem item = new MenuItem("Exit");
popup.add(item);
TrayIcon trayIcon = new TrayIcon(image, "Amr_Trial", popup);
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
};
ActionListener listenerTray = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
primaryStage.hide();
}
};
trayIcon.addActionListener(listenerTray);
item.addActionListener(listener);
try{
tray.add(trayIcon);
}catch (Exception e) {
System.err.println("Can't add to tray");
}
} else {
System.err.println("Tray unavailable");
}
//
}
}
हाँ में जारी हो सकता है, मैं सिर्फ इतना है कि प्रलेखन पेज में, THX बहुत मिल गया। लेकिन जब मैं इसे छुपाता हूं, तो मैं फिर से दिखाई नहीं देता हूं, भले ही मैं शो() – amrlab
का उपयोग करता हूं, स्पष्ट/स्पष्ट निकास व्यवहार को समझाने के लिए अद्यतन उत्तर। – jewelsea
वास्तव में, Thx बहुत, मैं इसके लिए बहुत कुछ खोज रहा था !! – amrlab