Ok, quindi ho già eseguito le applicazioni Swing e so se si desidera visualizzare un nome diverso per il menu dell'applicazione (quello sui Mac che di solito hanno un "Preferenze "e" Esci "), devi usare: System.setProperty("com.apple.mrj.application.apple.menu.about.name", "App name");
e deve essere eseguito prima della creazione di JFrame. L'ho fatto, ma continua a mostrare il nome della mia classe principale come nome del menu, come se non avessi scritto quella riga di codice. Ho cercato su Google questo problema, ma non sono riuscito a trovare nulla di utile, quindi ho cercato solo qui, ma chiunque avesse un problema simile stava eseguendo Java 1.5, 1.6 o 1.7. Quindi ho pensato che forse aveva qualcosa a che fare con la mia versione attuale di Java, 1.8.Il nome del menu dell'applicazione Swing non viene visualizzato correttamente in Java 1.8
This, this e this non ha funzionato. This, this e this o mi hanno inviato a informazioni obsolete, oppure i collegamenti non funzionavano più. Inoltre, sto usando Mac 10.8.
Qualsiasi suggerimento/risposta sarebbe molto apprezzato.
Un aggiornamento:
ecco il codice Inizialmente avevo:
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");
}
}
E qui è una soluzione che trashgod fornito a qualcun altro:
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);
}
});
}
}
E a quanto pare ho bisogno di 10 la reputazione di pubblicare immagini, quindi non posso mostrarti il risultato, ma non ha funzionato.
[Questo] (http://stackoverflow.com/a/11915509/230513) funziona per me su 10.9, Java 8. Per informazioni più specifiche, si prega di modificare la tua domanda per includere un [completa esempio] (http://stackoverflow.com/help/mcve) che mostra il problema che descrivi. – trashgod
@trashgod Ho copiato letteralmente la soluzione che hai postato [qui] (http://stackoverflow.com/questions/8955638/how-do-i-move-my-jmenubar-to-the-screen-menu-bar-on -Mac-os-x/8956715 # 8956715). L'unica differenza è che ho la classe in un pacchetto non predefinito, e ho il riferimento 'pacchetto bouncing_off_axes' nel codice. Non ha funzionato, il menu ha continuato a visualizzare il nome della classe e non il nome impostato. Modificherò il mio post e inserirò ciò che avevo in origine e l'esempio che hai fornito.Inoltre, mi piacerebbe apportare questa modifica nel codice, e non sulla riga di comando. – mistShaker
AFAIK, l'approccio 'setProperty()' fallisce con Java 8. Perché non aggiungere il tuo JAR a un pacchetto di applicazioni, per [esempio] (http://stackoverflow.com/a/14485964/230513)? – trashgod