Wie kann ich das Fenstermenü eines JFrame in Java ändern? Das ist das (in Windows) oben links, hinter dem Anwendungssymbol, das Dinge wie 'Wiederherstellen', 'Verschieben', 'Minimieren', 'Größe ändern' ... hatÄndern Sie das Fenstermenü in Java
7
A
Antwort
1
Leider habe ich nur gefunden eine Möglichkeit, dies mit der "Metalldekoration" zu tun (damit meine ich JFrame.setDefaultLookAndFeelDecorated(true);
). Ich werde natürlich die Antwort aktualisieren, wenn ich eine mit dem System LaF finde, aber ich denke das ist immer noch eine Antwort wert.
Ausgang:
Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.io.BufferedReader;
import java.io.UnsupportedEncodingException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Example {
public Example() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame();
JMenu systemMenu = getSystemMenu(frame);
systemMenu.add(new JMenuItem("New JMenuItem"), 0);
for (Component component : systemMenu.getPopupMenu().getComponents()) {
if (component.toString().contains("JMenu")) {
((JMenuItem) component).setForeground(Color.RED);
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private JMenu getSystemMenu(JFrame frame) {
for (Component c1 : frame.getLayeredPane().getComponents()) {
if (c1.toString().contains("MetalTitlePane")) {
for (Component c2 : ((Container) c1).getComponents()) {
if (c2.toString().contains("SystemMenuBar")) {
return (JMenu) ((Container) c2).getComponent(0);
}
}
}
}
return null;
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Example();
}
});
}
}
Verwandte Themen
- 1. Ändern Sie das Standardfüllzeichen in Java printf?
- 2. Liquibase: Ändern Sie den Spaltentyp in Java
- 3. ändern Sie das aktuelle Arbeitsverzeichnis
- 4. So ändern Sie das Kommentarzeichen
- 5. Ändern Sie das Formular in der Hauptklasse
- 6. So ändern Sie das Standardgebietsschema in GWT
- 7. So ändern Sie das Datumsformat in jqgrid
- 8. Ändern Sie das Projektdesign in Android Studio?
- 9. Ändern Sie das Datumsformat in Velocity
- 10. So ändern Sie das Datum in VBA
- 11. Ändern Sie das überschriebene Mitglied in async
- 12. Wie ändern Sie das Sperrzeitlimit in db2?
- 13. Ändern Sie das Symbol in der Listenansicht
- 14. So ändern Sie das Datumsformat in Yii
- 15. Ändern Sie das Paketverzeichnis in Julia
- 16. Ändern Sie das Chrome-Erweiterungssymbol
- 17. Verwenden Sie die Methode keySet() und ändern Sie dann das Set in ein String Array? Java
- 18. Können Sie das Basisbild direkt ändern?
- 19. Objekte java zu ändern, ohne sie
- 20. Wie finden und ändern Sie das Feld in geschachtelten Fallklassen?
- 21. Ändern Objekt Animationsgeschwindigkeit in Java
- 22. So ändern Sie das Symbol in JLabel mit JButton
- 23. Ändern Sie das Lupensymbol auf einer UISearchBar
- 24. Ändern einer Ganzzahl in Java
- 25. Ändern Sie das aktuelle Verzeichnis mit Knoten
- 26. Azure Ändern Sie das zugehörige Verzeichnis 'None'
- 27. So ändern Sie das übereinstimmende Muster
- 28. Ändern Sie das Anwendungslabel Xamarin Android
- 29. So ändern Sie das XML-Attribut
- 30. So ändern Sie das Format der Zeit
von einigen (erforderlich einigen zusätzlichen Methoden, Haufen Code) custom L & F, Substanz (und einer anderen, zB JGoodies) ist ein guter Anfang, beachten Sie Teil von L & F kann ein Problem mit Java8 – mKorbel