Valeurs de Jcombobox pour graphique
Newbie
-
tarek_dotzero Messages postés 817 Date d'inscription Statut Membre Dernière intervention -
tarek_dotzero Messages postés 817 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à utiliser des valeurs de Jcombobox pour faire un graphique. Mon problème est que tant que je n'ai pas additionné la Jcombobox au Jpanel je ne peux récupérer la valeur pour faire le graphique dans le même Jpanel. Pour l'instant, je cherche à mettre des valeurs de graduations sur l'axe des abscisses à partir de la Jcombobox (qui donne l'échelle choisie). Comment faire?
Voici le programme:
Je cherche à utiliser des valeurs de Jcombobox pour faire un graphique. Mon problème est que tant que je n'ai pas additionné la Jcombobox au Jpanel je ne peux récupérer la valeur pour faire le graphique dans le même Jpanel. Pour l'instant, je cherche à mettre des valeurs de graduations sur l'axe des abscisses à partir de la Jcombobox (qui donne l'échelle choisie). Comment faire?
Voici le programme:
public class DeriveGenetique1 { public DeriveGenetique1() { JFrame frame = new JFrame("Derive genetique"); frame.setPreferredSize(new Dimension(700, 700)); frame.setLocation(100, 0); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel A = new JPanel() { int largeur = 500; int hauteur = 500; // coordonnes int x0 = 100; int y0 = hauteur - 20; int x1 = largeur - 20; int y1 = 100; public void paintComponent(Graphics g) { // cadre g.setColor(Color.orange); g.fillRect(x0, y1, x1 - x0, y0 - y1); g.setColor(Color.DARK_GRAY); // ordonnee g.drawLine(x0, y0, x0, y1); // abscisse g.drawLine(x0, y0, x1, y0); // subdivision ordonnee int b = 0; // titre axe g.drawString("frequence allele", x0 - 20, y1 - 5); for (int i = 0; i < y0 - y1 + 10; i = i + (y0 - y1) / 10) { g.drawLine(x0, y0 - i, x0 + 10, y0 - i); // graduations String a = Double.toString((double) b / 10); g.drawString(a, x0 - 20, y0 - i + 5); b += 1; } // subdivision abscisse // titre axe g.drawString("nb generations", x1 + 20, y0 + 5); for (int i = 0; i < x1 - x0 + 10; i = i + (x1 - x0) / 10) { g.drawLine(x0 + i, y0, x0 + i, y0 - 10); } /* echelle graduee des axes */ } }; JButton lancer = new JButton("Lancer"); JButton RaZ = new JButton("effacer"); // combobox Double[] items0 = { 0.1, 0.5, 0.9 }; final JComboBox<Double> probabilite = new JComboBox<Double>(items0); Integer[] items1 = { 10, 25, 50, 100, 250, 1000 }; final JComboBox<Integer> population = new JComboBox<Integer>(items1); Integer[] items2 = { 50, 100, 250, 1000, 2500 }; final JComboBox<Integer> generations = new JComboBox<Integer>(items2); // choix par defaut probabilite.setSelectedIndex(1); population.setSelectedIndex(1); generations.setSelectedIndex(1); // ecouteurs combobox /* probabilité alleles */ ActionListener ValeurProba = new ActionListener() { public void actionPerformed(ActionEvent e) { double d = (double) probabilite.getSelectedItem(); } }; probabilite.addActionListener(ValeurProba); /* population */ ActionListener ValeurPopulation = new ActionListener() { public void actionPerformed(ActionEvent e) { int i = (int) (population.getSelectedItem()); } }; population.addActionListener(ValeurPopulation); /* population */ ActionListener ValeurGeneration = new ActionListener() { public void actionPerformed(ActionEvent e) { int i = (int) (generations.getSelectedItem()); } }; generations.addActionListener(ValeurGeneration); // JLabel JLabel proba = new JLabel("frequence allelique"); JLabel pop = new JLabel("effectifs"); JLabel gen = new JLabel("generations"); // inclusions A.add(proba, BorderLayout.NORTH); A.add(probabilite, BorderLayout.NORTH); A.add(pop, BorderLayout.NORTH); A.add(population, BorderLayout.NORTH); A.add(gen, BorderLayout.NORTH); A.add(generations, BorderLayout.NORTH); A.add(lancer, BorderLayout.NORTH); A.add(RaZ, BorderLayout.NORTH); frame.add(A); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { // TODO Stub de la méthode généré automatiquement DeriveGenetique1 test = new DeriveGenetique1(); } }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Valeurs de Jcombobox pour graphique
- Changer de carte graphique - Guide
- Graphique sparkline - Guide
- Planification de processeur graphique à accélération matérielle - Guide
- Graphique camembert excel - Guide
- Comment faire un graphique sur excel - Guide
1 réponse
Bonjour,
Vous pouvez tenter plusieurs solutions, à titre d'exemple :
1. Tenter de commencer par une valeur par défaut en se basant sur le tableau "items" qui contient les valeur de la JComboBox, j'ai vu que vous mettez toujours le premier élément comme étant la valeur par défaut.
2. Réorganiser votre code :
Le JPanel A utilise une méthode paintCompenent différente, alors pourquoi ne pas le déclarer dans une classe séparer avec un "extends JPanel" et ajouter des méthode pour la mise à jour qui modifie les valeur et redessine le composant ?
Les valeurs par défaut peuvent être passées comme des paramètres pour le constructeur contrairement au constructeur par de la classe JPanel.
Bon Courage.
Vous pouvez tenter plusieurs solutions, à titre d'exemple :
1. Tenter de commencer par une valeur par défaut en se basant sur le tableau "items" qui contient les valeur de la JComboBox, j'ai vu que vous mettez toujours le premier élément comme étant la valeur par défaut.
2. Réorganiser votre code :
Le JPanel A utilise une méthode paintCompenent différente, alors pourquoi ne pas le déclarer dans une classe séparer avec un "extends JPanel" et ajouter des méthode pour la mise à jour qui modifie les valeur et redessine le composant ?
Les valeurs par défaut peuvent être passées comme des paramètres pour le constructeur contrairement au constructeur par de la classe JPanel.
Bon Courage.