2009-09-14 10 views
1

J'ai une petite application java + swing. Jusqu'à présent, cela fonctionnait bien, sur OS X et sur Windows. Récemment, un utilisateur a remarqué que sur son OS X (version encore inconnue, ni la version java) tous les textes de l'interface graphique sont décalés et coupés (comme vous pouvez le voir sur la capture d'écran).Texte décalé dans l'application swing sur OS X

wrong look http://b3.s3.quickshareit.com/picture1ac6aa.png

et lien HTML est décalé vers le bas et la coupe. Tous ces éléments sont des JLabels.

Voici comment il devrait ressembler

ok look http://b1.s3.quickshareit.com/screenshot_45f5e29f947e59b81.png

Toutes les idées/aide? Est-ce que quelqu'un a déjà eu ce problème? Je n'ai aucune idée par où commencer. Merci pour toute aide

I googlé "culture java JLabel/coupé", etc.

fragment ==========

du code

import java.awt.Insets; 

import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import System.DnDList; 
import System.QSTWindow; 
import System.configuration.Configuration; 


public class Test extends JFrame 
{ 
    private static final long serialVersionUID = 8698865819017225558L; 

    public static void main(String[] args) 
    { 
     Test main = new Test(); 
     main.setVisible(true); 
    } 

    private JPanel down_panel; 
    private JButton b_Preferences; 
    private JButton b_AddFile; 
    private JButton b_Send2; 
    private JButton b_Cancel; 
    private JButton b_Cancel2; 
    private DnDList dndList; 
    private JLabel filesToSendLabel; 
    private JLabel browseFilesLabel; 
    private JPanel selectedFilesPanel; 
    private JPanel gPanel;  

    public Test() 
    { 
     this.setLayout(null); 
     this.setBackground(new java.awt.Color(255, 255, 255)); // XXX move color to configuration class 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 

     this.setSize(360, 525); // whole window 

     gPanel = new JPanel(); 
     gPanel.setLayout(null); 
     gPanel.setBackground(new java.awt.Color(255, 255, 255)); 
     gPanel.setBounds(0, 0, 365, 525); // whole window panel 


     selectedFilesPanel = new JPanel(); 
     selectedFilesPanel.setLayout(null); 
     selectedFilesPanel.setBounds(0, 333, 440, 122); 
     selectedFilesPanel.setBackground(new java.awt.Color(255, 255, 255)); 

     down_panel = new JPanel(); // panel with info button and upload button 
     down_panel.setLayout(null); 
     down_panel.setBackground(new java.awt.Color(255, 255, 255)); 
     down_panel.setBounds(0, 430, 365, 80); 

     // icon taken from http://en.wikibooks.org/wiki/Image:Information_icon.svg 
     b_Preferences = new JButton("PREF"); 
     b_Preferences.setFocusPainted(false); 
     b_Preferences.setToolTipText("Settings"); 
     b_Preferences.setBackground(Configuration.getBACKGROUND_COLOR()); 
     b_Preferences.setBounds(11, 25, 32, 32); 
     b_Preferences.setMargin(new Insets(0, 0, 0, 0)); 
     b_Preferences.setBorderPainted(false); 

     b_AddFile = new JButton("Browse"); 
     b_Send2 = new JButton(new ImageIcon(QSTWindow.class.getResource("upload.png"))); 
     b_Cancel = new JButton("Cancel"); 
     b_Cancel2 = new JButton("Cancel"); 

     dndList = new DnDList(selectedFilesPanel, 8, 10, 364, 97, this); 

     filesToSendLabel = new JLabel("Media to send"); 
     filesToSendLabel.setFont(Configuration.getDEFAULT_LABEL_FONT()); 
     filesToSendLabel.setBounds(10, 325, 150, 14); 
     browseFilesLabel = new JLabel("<HTML><U>Browse</U></HTML>"); 
     browseFilesLabel.setForeground(Configuration.getLINK_COLOR()); 
     browseFilesLabel.setFont(Configuration.getLINK_FONT()); 
     browseFilesLabel.setBounds(90, 325, 50, 14); 

     b_Send2.setBounds(272, 25, 72, 26); 
     b_Send2.setMargin(new Insets(3, 0, 3, 0)); 

     down_panel.add(b_Preferences); 
     down_panel.add(b_Send2); 

     gPanel.add(filesToSendLabel); 
     gPanel.add(browseFilesLabel); 
     gPanel.add(selectedFilesPanel); 
     gPanel.add(down_panel); 

     this.add(gPanel); 
     this.setResizable(false); 
    } 
} 

Désolé que Cet exemple n'est pas compilable (vous auriez besoin de la moitié de l'application), mais montre les éléments problématiques.

+1

Pouvez-vous poster du code? En particulier le code pour la construction de l'interface utilisateur –

+0

Code source ajouté pour l'image principale –

+0

Est-ce résolu maintenant? Pouvez-vous fournir un code pour reproduire le bogue? J'ai un mac assez ancien (OS X 10.4 avec java 1.5.0_19), mais je ne peux pas compiler l'exemple de code car il me manque certaines classes référencées. – nozebacle

Répondre

0

Je pensais que peut-être le problème a quelque chose à voir avec les polices installées dans le système.

Pouvez-vous définir le texte à une police connue que vous êtes sûr à 100% qu'il va être installé dans le système?

+0

Merci pour le conseil J'utilise Arials: régulier et gras - ils sont plutôt disponibles partout –