2014-09-26 29 views
5

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ı.

+1

[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

+0

@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

+1

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

cevap

5

System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Name"); 

uygulama menüsünde görüntülenen adı değiştirmede etkisiz gibi görünen System özelliğini ayarlayarak, Mac OS X 10.9 üzerinde Java 8 kullanma. hala çalışır Alternatifler bunlar şunlardır: Varsayılan olarak

  • , java komut satırından veya kavanoz manifestin Main-Class özelliğinde belirtilen sınıfın basit adını görüntüler uygulama menüsü.

    java -cp build/classes mypackage.Name 
    java -jar dist/MyJar.jar 
    
  • -Xdock:name="Name" komut satırı parametresini kullanın. here gösterildiği gibi
    java -Xdock:name="Name" -cp build/classes mypackage.Main 
    java -Xdock:name="Name" -jar MyJar.jar 
    
  • bir Info.plist için öznitelik eklemek, Mac uygulama demetine uygulama JAR ekleyin. Daha özel yardım için bir [eksiksiz içerecek şekilde soruyu düzenlemek lütfen

    <key>JVMOptions</key> 
    <string>-Xdock:name=Name</string> 
    
+0

Teşekkürler, yardımı takdir ediyorum. – mistShaker

+0

Gradle eklentisini kullanarak kavanozumu oluşturuyorum. Uygulamayı bu yaklaşımla adlandırmak mümkün mü? Şu anda sadece ana sınıfın adını alır. – rockydgeekgod

+0

Gösterilen her üç yaklaşım da dilbilimsel, platform bağımlı mekanizmalar olduğundan, neden olduğunu bilmiyorum; [tag: gradle] 'dan isteyebilirsiniz. – trashgod

İlgili konular