IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Swing] Look&Feel et petits détails


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut [Swing] Look&Feel et petits détails
    Bonjour à tous,

    j'ai mis en fichier joint un screenshot de l'interface d'un de mes programmes.
    J'aimerai régler quelques petits défauts swing qui y apparaissent mais je bloque pour les points suivants, si vous pouviez me donner une piste:

    - Le texte dans mes onglets n'est pas centré horizontalement
    - Même chose dans la MenuBar et dans les boutons...
    - Il y a une bordure autour de mes tabPane alors que je l'ai techniquement enlevée...

    J'ai évidemment cherché à modifier le look&feel mais je veux absolument garder le Metal ^^

    voilà si vous avez des tuyaux
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut;

    Post ton code.

  3. #3
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    ok mais c'est un peu le fouilli, du swing quoi, on va commencer par la menubar:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     public void setMenu(JPanel pan3, ActionListener exitListener, ActionListener aboutListener, ActionListener addUserListener, ActionListener delUserListener,
    ActionListener prefListener, ActionListener helpListener, ActionListener modifUserListener){
     
            JMenu fileMenu,aboutMenu,userMenu,prefMenu;
     
            menu = new JMenuBar();
            menu.setBounds(0,0,frame.getWidth(),20);
            menu.setVisible(true);
     
            fileMenu = new JMenu("PFIL");
            fileMenu.setFont(Font.decode("Arial 10px"));
            fileMenu.setBounds(0, 4, 50, 15);
     
            aboutMenu = new JMenu("About");
            aboutMenu.setFont(Font.decode("Arial 10px"));
            aboutMenu.setBounds(50, 4, 50, 15);
     
            userMenu = new JMenu("Utilisateurs");
            userMenu.setFont(Font.decode("Arial 10px"));
            userMenu.setBounds(100, 4, 50, 15);
     
            prefMenu = new JMenu("Preferences");
            prefMenu.setFont(Font.decode("Arial 10px"));
            prefMenu.setBounds(150,4,50,15);
     
     
            JMenuItem p  = new JMenuItem("Preferences");
            p.setFont(Font.decode("Arial 10px"));
            p.addActionListener(prefListener);
     
            JMenuItem m = new JMenuItem("Quitter");
            m.setFont(Font.decode("Arial 10px")); 
            m.addActionListener(exitListener);
     
            JMenuItem a = new JMenuItem("About");
            a.setFont(Font.decode("Arial 10px"));        
            a.addActionListener(aboutListener);
     
            JMenuItem h = new JMenuItem("Help");
            h.setFont(Font.decode("Arial 10px"));
            h.addActionListener(helpListener);
     
            JMenuItem addU = new JMenuItem("Ajouter un utilisateur");
            addU.setFont(Font.decode("Arial 10px"));
            addU.addActionListener(addUserListener);
     
            JMenuItem modifU = new JMenuItem("Modifier un utilisateur");
            modifU.setFont(Font.decode("Arial 10px"));
            modifU.addActionListener(modifUserListener);
     
            JMenuItem delU = new JMenuItem("Supprimer un utilisateur");
            delU.setFont(Font.decode("Arial 10px"));
            delU.addActionListener(delUserListener);        
     
            fileMenu.add(m);;
            aboutMenu.add(a);
            aboutMenu.add(h);
            userMenu.add(addU);
            userMenu.add(modifU);
            userMenu.add(delU);
            prefMenu.add(p);
            menu.add(fileMenu);
            menu.add(userMenu);
            menu.add(prefMenu);
            menu.add(aboutMenu);
     
            pan3.add(menu);
        }

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    ok mais c'est un peu le fouilli, du swing quoi
    Swing n'est pas fouilli, c'est une magnifique librairie !

    Il est inutile d'utiliser setVisible sur les menu. setBounds est de trop (ton problème vient de la, la JMenuBar gérera les items toute seule). Et le menu s'ajoute à ta fenêtre avec la méthode setJMenuBar, ce sera mieux qu'a un panel.

    Aussi, tu peut créer un seul objet Font que tu donne à tout tes items.

    Sans utiliser setBounds, tout va mieux. Pour que les choses soit davantage compréhensible, l'oraganisation de ton code est bénéfique.

    Voici ce que pourrait être un tel code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class TestMenu extends JFrame {
     
    	public static void main(String[] args) {
    		TestMenu frame = new TestMenu();
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    	}
     
    	public TestMenu() {
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		JPanel panel = (JPanel) getContentPane();
    		panel.setPreferredSize(new Dimension(300, 300));
    		setJMenuBar(new MonMenu());
    	}
     
    	public class MonMenu extends JMenuBar {
     
    		private final Font font = Font.decode("Arial 10px");
     
    		public MonMenu() {
    			JMenu fileMenu = new JMenu("PFIL");
    			fileMenu.setFont(this.font);
     
    			JMenu aboutMenu = new JMenu("About");
    			aboutMenu.setFont(this.font);
     
    			JMenu userMenu = new JMenu("Utilisateurs");
    			userMenu.setFont(this.font);
     
    			JMenu prefMenu = new JMenu("Preferences");
    			prefMenu.setFont(this.font);
     
    			JMenuItem preferences = new JMenuItem("Preferences");
    			preferences.setFont(this.font);
     
    			JMenuItem quitter = new JMenuItem("Quitter");
    			quitter.setFont(this.font);
    			quitter.addActionListener(new QuitterListener());
     
    			JMenuItem about = new JMenuItem("About");
    			about.setFont(this.font);
     
    			JMenuItem help = new JMenuItem("Help");
    			help.setFont(this.font);
     
    			JMenuItem addUser = new JMenuItem("Ajouter un utilisateur");
    			addUser.setFont(this.font);
     
    			JMenuItem modifUser = new JMenuItem("Modifier un utilisateur");
    			modifUser.setFont(this.font);
     
    			JMenuItem delUser = new JMenuItem("Supprimer un utilisateur");
    			delUser.setFont(this.font);
     
    			fileMenu.add(quitter);
    			aboutMenu.add(about);
    			aboutMenu.add(help);
    			userMenu.add(addUser);
    			userMenu.add(modifUser);
    			userMenu.add(delUser);
    			prefMenu.add(preferences);
     
    			add(fileMenu);
    			add(userMenu);
    			add(prefMenu);
    			add(aboutMenu);
    		}
     
    	}
     
    	public class QuitterListener implements ActionListener {
     
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			System.exit(0);
    		}
     
    	}
     
    }
    J'ai mis un listener sur Quitter.

  5. #5
    Membre expérimenté Avatar de Tux++
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 281
    Par défaut
    Swing n'est pas fouilli, c'est une magnifique librairie !
    Ce n'est pas dans ce sens que je parlais, du code Swing devient vite lourd à lire C'est pour cela que je n'ai posté que mon menu

    Merci pour les infos je vais utiliser setMenuBar();
    Pour les fontes, c'est vrai que c'est beaucoup plus propre, disons que je n'ai pas encore cherché vraiment à repasser sur mon code Swing pour l'améliorer.
    Par contre je ne suis vraiment pas pour étendre JFrame, mais ce n'est qu'un détail

    merci

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par Tux++ Voir le message
    du code Swing devient vite lourd à lire
    Il y a parfois une succession d'appels qui peuvent donner cette impression de lourdeur, oui.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Swing - Look and Feel - Office 2010
    Par mortimer.pw dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/10/2011, 18h47
  2. [Swing] [Look and Feel] Background métal et non système
    Par SpecialCharacter dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 11/02/2008, 17h05
  3. Swing: look & feel...
    Par menuge dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/04/2006, 17h12
  4. Look and Feel SWING...
    Par menuge dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/03/2006, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo