1 pièce(s) jointe(s)
Affichage JComboBox sous MAC OS
Bonjour,
Lorsque je définis setEditable(false) et setEditable(true) pour une JComboBox, l'aspect de cette boite est différente sous MAC/OS alors que sous Windows il n'y a pas de changement.
Le plus ennuyeux, c'est que l'affichage avec "true" est très laid comme vous pouvez le constater sur l'image ci-dessous. Par exemple la flèche est plus haute et n'est plus incrustée dans la zone d'entrée. Est-ce un bug ?
D'après vous, est-ce que en redéfinissant les tailles de chaque élément je pourrais obtenir quelque chose de plus correct car les utilisateurs n'aiment pas du tout ce aspect, et je ne souhaite pas redessiner complètement cette boite.
Si oui, comment faire ? Sur l'image jointe, la boite supérieure a été définie avec setEditable(false) et celle en dessous avec setEditable(true);
Merci.
Gérard
Code:
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
|
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Color;
import javax.swing.JComboBox;
public class TestCombo extends JFrame
{
private static final long serialVersionUID = 1L;
private JButton Terminer = null;
private JComboBox Combo = null,
Combo2 = null;
private JPanel MonPanneau = null;
public TestCombo()
{
créationBoites();
définirListener();
this.setLocationRelativeTo(null);
Combo.addItem("Choisissez");
Combo2.addItem("Choisissez");
for (int i=0;i<15;i++)
{
Combo.addItem("Ligne " + i ); // on ajoute dans la combo
Combo2.addItem("Ligne " + i ); // on ajoute dans la combo2
}
// int x = Combo.getSelectedIndex();
setVisible(true);
}
public void créationBoites()
{
setSize(625, 430);
this.setName("TestCombo");
getContentPane().setName("TestCombo");
MonPanneau = new JPanel();
MonPanneau.setLayout(null);
MonPanneau.setName("Panel1");
MonPanneau.setBounds(65, 11, 421, 218);
MonPanneau.setBackground(Color.gray);
Combo = new JComboBox();
Combo.setName("Combo");
Combo.setBounds(149, 97, 212, 22);
Combo.setEditable(false);
Combo2 = new JComboBox();
Combo2.setBounds(147, 224, 229, 22);
Combo.setEditable(true);
Terminer = new JButton("Terminer");
Terminer.setBounds(224, 325, 89, 23);
MonPanneau.add(Terminer);
MonPanneau.add(Combo);
MonPanneau.add(Combo2);
getContentPane().add(MonPanneau);
}
private void définirListener()
{
Terminer.addActionListener(e -> System.exit(0));
}
public static void main(String[] args)
{
new TestCombo();
}
} |