WindowsBuilder swing java
Fermé
Streamooc
Messages postés
74
Date d'inscription
samedi 17 juin 2017
Statut
Membre
Dernière intervention
8 février 2023
-
Modifié le 21 juin 2017 à 08:50
Streamooc Messages postés 74 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023 - 2 juil. 2017 à 04:13
Streamooc Messages postés 74 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023 - 2 juil. 2017 à 04:13
A voir également:
- WindowsBuilder swing java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
- Java bible - Forum Téléchargement
2 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
21 juin 2017 à 21:07
21 juin 2017 à 21:07
Bonjour,
Tu ne peux pas mettre deux composants dans une même "case" du BorderLayout, donc
Une manière de faire, c'est de mettre un JPanel au centre pour y mettre tes deux composants mais sans le BorderLayout.
Exemple :
Remarque : il y a une petite erreur sur
Tu ne peux pas mettre deux composants dans une même "case" du BorderLayout, donc
add(fil, BorderLayout.CENTER);et
add(uraTap1,BorderLayout.CENTER)rentrent en conflit et seul le dernier reste.
Une manière de faire, c'est de mettre un JPanel au centre pour y mettre tes deux composants mais sans le BorderLayout.
Exemple :
JPanel panel = new JPanel(); panel.setLayout(null); fil.setSize(1000, 1000); panel.add(fil); uraTap1.setSize(1000, 1000); panel.add(uraTap1); add(panel, BorderLayout.CENTER);
Remarque : il y a une petite erreur sur
button.addActionListener(e -> goUraTap(uraTap1));car c'est buttonUra qui devrait être utilisé ici...
Streamooc
Messages postés
74
Date d'inscription
samedi 17 juin 2017
Statut
Membre
Dernière intervention
8 février 2023
Modifié le 2 juil. 2017 à 11:56
Modifié le 2 juil. 2017 à 11:56
Bonjour KX,
J'ai créé un JComboBox contenant 0,1,2 que j'appelle IT.Ensuite des petits rectangles représentant ces IT et également un fil rouge.Je veux qu'en sélectionnant un IT que le fil rouge remplisse le rectangle de cet IT.J'ai essayé las j'ai besoin s'il vous plait d'aides.Voici mon code:
J'ai créé un JComboBox contenant 0,1,2 que j'appelle IT.Ensuite des petits rectangles représentant ces IT et également un fil rouge.Je veux qu'en sélectionnant un IT que le fil rouge remplisse le rectangle de cet IT.J'ai essayé las j'ai besoin s'il vous plait d'aides.Voici mon code:
public class FenetrePrincipale extends JFrame { private static final long serialVersionUID = 1L; public FenetrePrincipale() { setSize(1364, 788); setLocationByPlatform(true); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(null); IntervalleTemps it =new IntervalleTemps(150, 10); it.setLocation(992, 21); it.setSize(278,25); panel.add(it); // ajout au conteneur de 'it' //Ajout de tout le contenu au conteneur getContentPane().add(panel,BorderLayout.CENTER); //Le bouton 'run' JButton buttonRun = new JButton(""); buttonRun.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/run.png.png"))); buttonRun.setBounds(46, 658, 56, 35); panel.add(buttonRun); //Rectangle vide représentant IT0 JToggleButton toggleButton_16 = new JToggleButton(""); toggleButton_16.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png"))); toggleButton_16.setBounds(1155, 31, 96, 14); panel.add(toggleButton_16); JLabel lblIt = new JLabel("IT 0"); //On écrit à côté du rectangle ceci 'IT 0' lblIt.setBounds(1261, 31, 46, 14); panel.add(lblIt); //Rectangle vide représentant IT1 JToggleButton toggleButton_17 = new JToggleButton(""); toggleButton_17.setIcon(new ImageIcon(FenetrePrincipale.class.getResource("/sn/esmt/logicieltap/ressources/barre.png"))); toggleButton_17.setBounds(1155, 52, 96, 14); panel.add(toggleButton_17); JLabel lblIt_1 = new JLabel("IT 1"); //On écrit à côté du rectangle ceci 'IT 1' lblIt_1.setBounds(1261, 52, 46, 14); panel.add(lblIt_1); //Combobox:La barre des intervalles de temps String[] messageStrings ={"0","1","2"}; JComboBox cmbMessageList = new JComboBox(messageStrings); cmbMessageList.setBounds(474, 62, 37, 20); panel.add(cmbMessageList); //les intervalles de temps à sélectionner cmbMessageList.addActionListener(e ->{ switch ((String)cmbMessageList.getSelectedItem()) { case "0":labelIt.setText("IT 0 est réservé pour la synchronisation"); break; case "1":labelIt.setText("Sélection de IT 1"); break; } }); //Utilisation uniquement du bouton 'boutonRun' //Exécuter les actions l'une après l'autre buttonRun.addActionListener(new WorkflowActionListener(0, (state,e)->{ switch (state) { case 0: //System.out.println("buttonRun: state 0"); goMessageIt(); return 1; case 1: //System.out.println("buttonRun: state 1"); goIt(it); //Initialisation du fil rouge return 2; default: throw new IllegalStateException("State invalid: " + state); } })); } /** * Méthode de 'la sélection d'IT' */ public void goMessageIt(){ JOptionPane.showMessageDialog(null, "Sélectionner un IT"); } /** * Cette méthode permet de déclencher le mouvement de déclencher la couleur montrant l'IT sélectionné * @param ura1 */ private void goIt(IntervalleTemps it) { new SwingWorker<Void, Void>() { @Override protected Void doInBackground() { for (int i = 0; i < 12; i++) { //270:Distance que le fil doit parcourir avant de s'arrêter it.incrX(); it.repaint(); it.setVisible(true); //on voit le fil rouge défiler quand on appuie sur le bouton 'run' } return null; } }.execute(); } }
public class WorkflowActionListener implements ActionListener{ private int state; private final BiFunction<Integer, ActionEvent, Integer> actionsPerformed; public WorkflowActionListener(int init, BiFunction<Integer, ActionEvent, Integer> actionsPerformed) { state = init; this.actionsPerformed = actionsPerformed; } @Override public void actionPerformed(ActionEvent e) { state = actionsPerformed.apply(state, e); } }
public class IntervalleTemps extends Component{ private static final long serialVersionUID = 1L; private int posX; private int posY; public IntervalleTemps(int posX, int posY) { this.posX = posX; this.posY = posY; } @Override public void paint(Graphics g) { g.setColor(Color.red); g.fillRect(posX, posY, 98, 50); } public void incrX() { posX++; } public void incrY() { posY++; } }
public class ClassePrincipale { public static void main(String[] args) { // TODO Auto-generated method stub FenetrePrincipale fenetrePrincipale = new FenetrePrincipale(); fenetrePrincipale.setVisible(true); } }
23 juin 2017 à 16:47
L'autre problème auquel je suis soumis maintenant c'est que j'aimerais que les deux fils 'rouge' et 'bleu' ne s'affichent pas avant le click sur les boutons c'est-à-dire que lorsque je compile le programme j'ai seulement les boutons qui s'affichent et dès que je clique sur 'Run' le fil rouge apparaît et défile et ensuite quand je clique sur 'Step' le fil bleu apparaît et défile.Si vous pouvez encore m'aider s'il vous plaît
23 juin 2017 à 18:20
Modifié le 27 juin 2017 à 12:05
Merci beaucoup KX ça marche
Je veux utiliser peu de boutons dans mon programme
Dans un premier instant manuellement .Au fait je veux utiliser uniquement le bouton 'Run' et exécuter les tâches l'une après l'autre c'est - à dire je veux qu'en cliquant sur 'Run' le fil rouge défile.Ensuite quand je clique à nouveau sur 'Run' un message 'Sélectionnez un IT ' s'affiche et enfin lorsque je clique sur 'Run' le fil rouge défile
Dans un second instant automatiser c'est à dire une fois qu'en cliquant sur 'Run' tout se fait sans que je ne clique à nouveau
J'ai essayé pour la partie manuelle mais ça ne marche pas
J'ai encore besoin d'aide s'il vous plait
27 juin 2017 à 12:18
Moi je testes ton code et y a rien qui s'affiche...
Remarque :
Dans la mesure où le listener n'est ajouté qu'à un seul composant, il est impossible que la source soit autre chose que cmbMessageList.
Tu peux faire directement :
Modifié le 27 juin 2017 à 15:07