Jak mogę zmodyfikować menu okna JFrame w Javie? To jest ten (w systemie Windows) w lewym górnym rogu, za ikoną aplikacji, który zawiera elementy takie jak "Przywróć", "Przenieś", "Minimalizuj", "Zmień rozmiar" ...Modyfikuj menu okna w Javie
7
A
Odpowiedz
1
Niestety, znalazłem tylko sposobem na zrobienie tego z "metalową dekoracją" (mam na myśli wykonanie JFrame.setDefaultLookAndFeelDecorated(true);
). Oczywiście zaktualizuję odpowiedź, jeśli znajdę taką z systemem LaF, ale myślę, że to wciąż jest warte odpowiedzi.
wyjściowa:
Kod:
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();
}
});
}
}
Powiązane problemy
- 1. Okna menu kontekstowe powłoki ikona
- 2. Menu systemowe okna uruchamiania w niestandardowym oknie
- 3. Modyfikuj algorytm wyszukiwania menu Start systemu Windows 7?
- 4. Modyfikuj zawartość okna dialogowego pobierania przeglądarki Firefox z zestawu dodatków
- 5. Pobierz bieżący tytuł aktywnego okna w Javie
- 6. Modyfikuj skompilowany .Net Exe
- 7. Modyfikuj statyczne zmienne podczas debugowania w Eclipse
- 8. Modyfikuj klucz obcy w Ecto
- 9. Modyfikuj ostatni element w tablicy
- 10. Modyfikuj wartości dyktujące w miejscu
- 11. Modyfikuj kierunek przewijania
- 12. Modyfikuj listę. Zachowuje zachowanie
- 13. Ruby Modyfikuj project.pbxproj
- 14. Scal: modyfikuj wiele tabel
- 15. Modyfikuj programowo pliki csproj
- 16. Modyfikuj szablon javadoc IntelliJ
- 17. Modyfikuj własne, Ruby
- 18. Modyfikuj MSBuild ItemGroup Metadata
- 19. Modyfikuj bity w liczbie całkowitej w Pythonie
- 20. Ukryj elementy menu jeden po drugim na zmianę rozmiaru okna
- 21. Okno dialogowe Qt bez ikony okna (menu systemowe)
- 22. Wtyczka Visual Studio 2010 - Dodanie menu kontekstowego do okna edytora
- 23. Modyfikuj etykiety osi X w każdym aspekcie
- 24. Modyfikuj wartość domyślną w SQL Server
- 25. Modyfikuj wysłane wartości wejściowe w onbegin ajax.beginform
- 26. Modyfikuj document.cookie w konsoli Chrome nie działa
- 27. Modyfikuj domyślną czcionkę w Python Tkinter
- 28. Modyfikuj wskaźnik karty dynamicznie w systemie Android
- 29. Modyfikuj atrybuty elementów podrzędnych w komponencie ReactJS
- 30. Modyfikuj obiekt w trybie wieloprocesorowym Pythona
stosując część (wymaganych kilka dodatkowych metod, wiązka kodu) niestandardowej L & F, substancję (a inny, np JGoodies) to dobry początek, uwaga, że część L & F może mieć problem z Javą8 – mKorbel