Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
package de.tutorials;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Window;
import java.lang.reflect.Method;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import javax.swing.JFrame;
import javax.swing.JTree;
public class TransparentJFrame extends JFrame {
public TransparentJFrame() {
super("TransparentJFrame");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setUndecorated(true);
setLocationRelativeTo(null); // CENTER on Screen
JTree comp = new JTree();
comp.setPreferredSize(new Dimension(400, 300));
add(comp);
pack();
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
int i = 0;
public void run() {
i++;
final float transparency = 1.f / (i);
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Class<?> awtUtilitiesClass = getClass().getClassLoader().loadClass("com.sun.awt.AWTUtilities");
// oder per AWTUtilities.setWindowOpaque(frame, false)
//siehe auch: http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/#Setting-the-Opacity-Level-of-a-Window
Method mSetWindowOpacity = awtUtilitiesClass.getMethod("setWindowOpacity",Window.class, float.class);
System.out.println(i + " " + transparency);
mSetWindowOpacity.invoke(null,TransparentJFrame.this,Float.valueOf(transparency));
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
i %= 5;
}
}, 1, 1, TimeUnit.SECONDS);
}
public static void main(String[] args) {
new TransparentJFrame().setVisible(true);
}
}
Ja, dazu haben wir auch ein Beispiel moment....Könnte man java dateien auch komplett ohne fenster ausführen also auch ohne console ?
javaw -jar c:\temp\app.jar
javaw -cp c:\TEMP\app.jar de.tutorials.App
package de.tutorials;
import java.awt.Dimension;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.TrayIcon.MessageType;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Date;
public class App {
final static String cmdOp1 = "op1";
final static String cmdExit = "exit";
private TrayIcon systemTrayIcon;
public static void main(String[] args) {
new App().start();
}
private void start() {
startUI();
}
protected void handleShowMessage() {
systemTrayIcon.displayMessage("Title", "Message: " + new Date(),MessageType.INFO);
}
protected void handleExit() {
shutdownUI();
}
protected void handleCommand(String command) {
System.out.println("Do: " + command);
if (cmdOp1.equals(command)) {
handleShowMessage();
} else if (cmdExit.equals(command)) {
handleExit();
}
}
private void shutdownUI() {
removeSystemTrayIcon();
}
private void removeSystemTrayIcon() {
if (systemTrayIcon != null) {
SystemTray.getSystemTray().remove(systemTrayIcon);
}
}
private void startUI() {
if (SystemTray.isSupported()) {
hookInitSystemTray();
}
}
private void hookInitSystemTray() {
try {
SystemTray tray = SystemTray.getSystemTray();
Dimension trayIconSize = tray.getTrayIconSize();
systemTrayIcon = new TrayIcon(getTrayIconImage(trayIconSize),
"Tooltip");
tray.add(systemTrayIcon);
systemTrayIcon.setPopupMenu(createPopupMenu(systemTrayIcon));
} catch (Exception ex) {
}
}
private BufferedImage getTrayIconImage(Dimension trayIconSize) {
// Generate dummy try icon image
return new BufferedImage(trayIconSize.width, trayIconSize.width,
BufferedImage.TYPE_INT_RGB);
}
private PopupMenu createPopupMenu(final TrayIcon trayIcon) {
PopupMenu menu = new PopupMenu("Menu");
menu.add(createMenuItem("Nachricht ausgeben", cmdOp1));
menu.add(createMenuItem("Beenden", cmdExit));
menu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
handleCommand(e.getActionCommand());
}
});
return menu;
}
private MenuItem createMenuItem(String caption, String actionCommand) {
MenuItem mi = new MenuItem(caption);
mi.setActionCommand(actionCommand);
return mi;
}
}