sql >> Database teknologi >  >> RDS >> Oracle

Hvordan påvirker Java til OS X 2013-004 (brud) Swing-applikationer?

Opdatering 2013-06-21:dette svar indeholder nogle løsninger og alternativer, der kan være nyttige, men @sidney-markowitz-biomatters' svar indeholder den korrekte koderettelse - LAF skal indstilles fra begivenhedstråden!

De seneste problemer ser ud til at være relateret til opdateringerne, der bryder Aqua Look and Feel (LAF), som er standard for Swing-apps på Mac OS X.

Hvis du har brug for Aqua LAF, så er der ikke for mange muligheder. Du skal muligvis vente på den næste Java-opdatering fra Apple (jeg går ud fra, at de vil rette dette med prioritet, da det er deres egen LAF). Du kan også prøve at bruge Java Application Bundler (dvs. bundle Oracle JRE og undgå at bruge systemets JRE).

Hvis du kan klare dig med en anden LAF, bør din app fungere som normalt. Det gjorde den i hvert fald for PaperCut (003-opdateringen forårsagede nogle vinduesfokusproblemer, 004-opdateringen forårsagede kaos).

Nogle muligheder:

  • Brug af den Java-versionsspecifikke tværplatform LAF fra Java-kode (f.eks. Nimbus eller Metal):

    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName())
    
  • Indstilling af en specifik LAF fra Java-kode:

    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel")
    
  • Tilsidesættelse af standard LAF fra terminal:

    java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel MyApp
    

I vores tilfælde kaldte vi eksplicit UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()) i vores kode og ønskede en løsning, der ikke indebar en kodeændring (dvs. et hotfix), så vi var nødt til at tilsidesætte standard systemet LAF som følger.

  • Tilsidesættelse af systemets LAF fra terminal:

    java -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ...
    
  • Tilsidesættelse af systemets LAF fra en Info.plist fil (hvis du har bundtet som et Mac-program, fungerer det også for de andre VM-indstillinger) (f.eks. på My.app/Contents/Info.plist ).

    Du vil tilføje -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel til slutningen af værdi for VMOptions . Mulighederne er rumadskilt, ligesom fra terminalen. For eksempel. hvis du allerede har en useScreenMenuBar mulighed:

    <key>VMOptions</key>
    <string>-Dcom.apple.macos.useScreenMenuBar=true -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel</string>
    


Rediger:@trashgod bad om et reproducerbart eksempel. Jeg er ikke sikker på, hvad det fulde omfang af problemerne med 004-opdateringen er, men her er en simpel gengivelse:

Opdatering 2013-06-21 - den forkerte vej, gengiver fejlen:

public class AquaLafTest {
    public static void main(String[] args) throws Exception {
        javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
        javax.swing.JOptionPane.showMessageDialog(null, "msg");
    }
}
  1. Kør med Apple JRE, der følger med 004-opdateringen (f.eks. på /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home ). Bemærk, at meddelelsen ikke er synlig, dialogikonet er ikke synligt, og knappen er ikke synligt klikbar.

  2. Kør med en ældre Apple JRE eller en anden JRE. Bemærk, at dialogen vises som forventet.

Opdatering 2013-06-21 - den rigtige måde, på begivenhedstråden, fungerer korrekt:

public class AquaLafTest {
    public static void main(String[] args) throws Exception {
        javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
                try {
                    javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
                    javax.swing.JOptionPane.showMessageDialog(null, "msg");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}


  1. Sådan fungerer LOWER()-funktionen i MySQL

  2. Sådan implementeres Percona Server til MySQL for høj tilgængelighed

  3. Sådan eksporteres forespørgselsresultat til .csv eller tabulatorsepareret fil i SQL Server Management Studio(SSMS) - SQL Server / TSQL Selvstudium Del 23

  4. Automatiser Database Schema Object Check