Okej, więc już wcześniej robiłem aplikacje Swing i wiem, czy chcesz wyświetlić inną nazwę menu aplikacji (tę na Macach, które zwykle mają "Preferencje" "i" Wyjdź "), musisz użyć: System.setProperty("com.apple.mrj.application.apple.menu.about.name", "App name");
i musi zostać wykonany przed utworzeniem JFrame. Zrobiłem to, ale nadal wyświetlałem nazwę mojej głównej klasy jako nazwę menu, tak jakbym nie napisał tego wiersza kodu w ogóle. Mam wpisane w Google hasło do tego problemu, ale nie mogłem znaleźć niczego przydatnego, a następnie po prostu szukałem tutaj, ale wszyscy, którzy mieli podobny problem, pracowali w Javie 1.5, 1.6 lub 1.7. Pomyślałem więc, że może to miało coś wspólnego z moją obecną wersją Java 1.8.Nazwa menu aplikacji Swing nie wyświetla się poprawnie w Javie 1.8
This, this i this nie działa. This, this i this albo wysłał mnie do nieaktualnych informacji, albo linki nie działały. Ponadto używam Mac 10.8.
Wszelkie sugestie/odpowiedzi byłyby bardzo mile widziane.
Aktualizacja:
tutaj jest kod I pierwotnie miał:
package bouncing_off_axes;
/**
* This is the driver class of this program.
*
* @author Mason
*
*/
public class Main {
/**
* The driving method.
*
* @param args
*/
public static void main(String[] args) {
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Physics Engine Practice - Bouncing Balls");
SimulationController view = new SimulationController("Test");
}
}
I tu jest rozwiązanie, które trashgod warunkiem do kogoś innego:
package bouncing_off_axes;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
/** @see https://stackoverflow.com/questions/8955638 */
public class NewMain {
public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty(
"com.apple.mrj.application.apple.menu.about.name", "Name");
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("Gabby");
final JPanel dm = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(320, 240);
}
};
dm.setBorder(BorderFactory.createLineBorder(Color.blue, 10));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(dm);
frame.pack();
frame.setLocationByPlatform(true);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
});
}
}
I widocznie muszę 10 reputacja do publikowania zdjęć, więc nie mogę pokazać wyniku, ale nie wyszło.
[To] (http://stackoverflow.com/a/11915509/230513) działa dla mnie na 10,9, Java 8. Dla bardziej konkretnej pomocy, proszę edytować swoje pytanie obejmują [zupełny przykład] (http://stackoverflow.com/help/mcve), który pokazuje problem, który opisujesz. – trashgod
@trashgod Skopiowałem dosłownie rozwiązanie, które opublikowałeś [tutaj] (http://stackoverflow.com/questions/8955638/how-do-i-move-my-jmenubar-to-the-screen-menu-bar-on -mac-os-x/8956715 # 8956715). Jedyna różnica polega na tym, że mam klasę w pakiecie innym niż domyślny i mam w kodzie referencję 'package bouncing_off_axes'. Nie zadziałało, menu nadal wyświetlało nazwę klasy, a nie nazwę, która została ustawiona. Zmienię mój post i wstawię to, co pierwotnie miałem i przykład, który podałeś.Chciałbym również wprowadzić tę zmianę w kodzie, a nie w wierszu poleceń. – mistShaker
AFAIK, podejście 'setProperty()' kończy się niepowodzeniem z językiem Java 8. Dlaczego nie dodać JAR do pakietu aplikacji, na [przykład] (http://stackoverflow.com/a/14485964/230513)? – trashgod