Tamam, bu yüzden daha önce Swing uygulamaları yaptım ve uygulama menüsü için farklı bir ad görüntülemek isteyip istemediğinizi biliyorum (genellikle "Tercihleri olan Mac'lerde" "ve" Çık "seçeneği), kullanmanız gerekir: System.setProperty("com.apple.mrj.application.apple.menu.about.name", "App name");
ve JFrame oluşturulmadan önce yürütülmelidir. Bunu yaptım, ama ana sınıfın adını, o kod satırını hiç yazmamışım gibi menü ismini göstermeye devam ediyor. Bu sorun için arama yaptım, ancak yararlı bir şey bulamadım ve daha sonra sadece burayı aradım ama benzer bir sorunu olan herkes Java 1.5, 1.6 veya 1.7 kullanıyordu. Bu yüzden belki şu anki Java versiyonum 1.8 ile ilgisi olduğunu düşündüm.Swing uygulaması menü adı doğru şekilde görüntülenmiyor Java 1.8
This, this ve this çalışmadı. This, this ve this, beni güncel olmayan bilgilere gönderdi veya bağlantılar artık işe yaramadı. Ayrıca, Mac 10.8'i çalıştırıyorum.
Her türlü öneri/cevap çok takdir edilecektir.
bir güncelleme: Burada
Başlangıçta vardı kodu:
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");
}
}
Ve burada başkasına temin trashgod bir çözümdür:
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);
}
});
}
}
Ve görünüşe göre ben 10 ihtiyaç görüntüleri göndermek için itibar, bu yüzden size sonuç gösteremiyorum, ama işe yaramadı.
[Bu] (http://stackoverflow.com/a/11915509/230513), 10.9 benim için Java 8. işleri Örnek] (http://stackoverflow.com/help/mcve) açıkladığınız sorunu gösterir. – trashgod
@trashgod Buraya gönderdiğiniz çözümü verbatim'i kopyaladım [here] (http://stackoverflow.com/questions/8955638/how-do-i-move-my-jmenubar-to-the-screen-menu-bar-on -mac-os-x/8956715 # 8956715). Tek fark, sınıfın varsayılan olmayan bir pakette olması ve kodda "bouncing_off_axes" referans paketine sahibim. Çalışmıyordu, menü ayarlanan adı değil, sınıf adını görüntülemeye devam etti. Gönderiyi düzenleyeceğim ve orijinal olarak sahip olduğum şeyi ve sağladığınız örneği koyacağım.Ayrıca, bu değişikliği kodda değil, komut satırında yapmak istiyorum. – mistShaker
AFAIK, setProperty() yöntemi Java 8 ile başarısız oluyor. Neden JAR'ınızı bir uygulama paketine eklemiyorsunuz, örneğin [http://stackoverflow.com/a/14485964/230513]? – trashgod