Fonction qui ajoute un JLabel.
snp3109
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
J'aimerai savoir si il était possible de créer une fonction qui permet d'ajouter plusieurs JLabel quand on appuie sur un bouton par exemple.
Si quelqu'un a une idée.
Merci beaucoup.
J'aimerai savoir si il était possible de créer une fonction qui permet d'ajouter plusieurs JLabel quand on appuie sur un bouton par exemple.
Si quelqu'un a une idée.
Merci beaucoup.
A voir également:
- Fonction qui ajoute un JLabel.
- Fonction si et - Guide
- Fonction miroir - Guide
- Ajouter un profil netflix payant - Accueil - Guide streaming
- Fonction moyenne excel - Guide
- A ajouté un nouvel appareil à cette conversation ✓ - Forum Facebook Messenger
1 réponse
Bien sûr c'est même assez simple... le plus dur étant de l'intégrer correctement dans ton application existante.
Exemple :
Exemple :
public class fenetre { public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setLayout(new FlowLayout()); final JButton button = new JButton("+"); frame.add(button); button.addActionListener(new ActionListener() { int n=1; public void actionPerformed(ActionEvent e) { frame.add(new JLabel(String.valueOf(n++))); frame.pack(); } }); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Je vais essayé d'être le plus clair possible.
J'aimerai en cliquant sur le bouton "+" (le JButton plusanalogique) afficher dans le label textapercutrame "voie1". Si après j'appuie sur le bouton "+" (le JButton plustor) j'aimerai afficher "voie1" "tor1".
Si j'appuie une seconde voie sur le plusanalogique alors ça affichera "voie1" "tor1" "voie2" ... Ainsi de suite.
J'espère avoir était clair.
Je pense qu'il faudrait compléter les méthode compteuranalogiqueplus et compteurtorplus qui intéragissent directement avec les deux boutons "+".
Merci de ta patiente KX.
public class fenetre
{
int compteurtor = 0;
int compteurtanalogique = 0;
int compteurnbrvoie = 0;
int comteurapercutrame = 0;
private JLabel lab = null;
private JLabel lab1 = null;
private JLabel lab2 = null;
private JLabel lab3 = null;
private JLabel lab4 = null;
private JLabel lab5 = null;
private JLabel lab6 = null;
private JLabel lab7 = null;
private JLabel lab8 = null;
private JLabel lab9 = null;
private JLabel lab10 = null;
private JLabel lab11 = null;
private JLabel octetdeparture = null;
private JLabel octetend = null;
private JLabel checkum = null;
private JLabel textapercutrame;
private JTextField text;
private JTextField text1;
private StringBuilder sb;
private JComboBox cb = null;
private CheckboxGroup groupe = null;
private Checkbox checkbox1 = null;
private Checkbox checkbox2 = null;
private JButton plusanalogique = null;
private JButton moinsanalogique = null;
private JButton plustor = null;
private JButton moinstor = null;
private JButton valider = null;
private JButton annuler = null;
private JCheckBox jrmi1;
public fenetre()
{
JFrame fenetre =new JFrame("Outil de création de nouveaux formats de trame");
fenetre.setSize(new Dimension(500,550));
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pan=new JPanel();
pan.setBackground(new Color(71,145,203));
pan.setLayout(null);
lab=new JLabel("Nouveau SNR");
lab.setBounds(0,0,500,60);
pan.add(lab);
lab1=new JLabel("Nom du nouveau format de trame :");
lab1.setBounds(8,38,200,60);
pan.add(lab1);
text = new JTextField("NouveauSNR");
text.setBounds(206,58,110,20);
pan.add(text);
lab2=new JLabel("Définition de la trame");
lab2.setBounds(0,74,500,60);
pan.add(lab2);
lab3=new JLabel("Octet de départ : ");
lab3.setBounds(8,110,100,60);
pan.add(lab3);
text1 = new JTextField("FF");
text1.setBounds(105,130,30,20);
pan.add(text1);
lab7=new JLabel("Ajouter/Supprimer une voie analogique : ");
lab7.setBounds(8,154,230,50);
pan.add(lab7);
plusanalogique = new JButton("+");
plusanalogique.setBounds(300,154,41,41);
plusanalogique.addActionListener(new compteuranalogiqueplus());
pan.add(plusanalogique);
moinsanalogique = new JButton("-");
moinsanalogique.setBounds(342,154,41,41);
moinsanalogique.addActionListener(new compteuranalogiquemoins());
pan.add(moinsanalogique);
lab8=new JLabel("Ajouter/Supprimer une voie Tout Ou Rien(TOR) : ");
lab8.setBounds(8,190,270,50);
pan.add(lab8);
plustor= new JButton("+");
plustor.setBounds(300,196,41,41);
plustor.addActionListener(new compteurtorplus());
pan.add(plustor);
moinstor = new JButton("-");
moinstor.setBounds(342,196,41,41);
moinstor.addActionListener(new compteurtormoins());
pan.add(moinstor);
lab4=new JLabel("Dans la ");
lab4.setBounds(8,232,50,65);
pan.add(lab4);
cb=new JComboBox();
cb.setBounds(55,255,130,20);
pan.add(cb);
lab5=new JLabel("Nombre d'octets : ");
lab5.setBounds(190,232,105,65);
pan.add(lab5);
CheckboxGroup groupe = new CheckboxGroup();
checkbox1=new Checkbox("1",groupe,true);
checkbox1.setBounds(300,251,30,30);
pan.add(checkbox1);
checkbox2=new Checkbox("2",groupe,false);
checkbox2.setBounds(300,267,40,40);
pan.add(checkbox2);
checkum = new JLabel("Checkum : ");
checkum.setBounds(8,280,105,65);
pan.add(checkum);
jrmi1 = new JCheckBox();
jrmi1.setSelected(true);
jrmi1.setBounds(70,306,20,15);
pan.add(jrmi1);
lab9=new JLabel("Aperçu de la trame");
lab9.setBounds(0,340,500,60);
pan.add(lab9);
lab6=new JLabel("Nombre de voies : ");
lab6.setBounds(8,390,110,20);
pan.add(lab6);
lab11 = new JLabel("0");
lab11.setBounds(115,389,25,25);
pan.add(lab11);
octetdeparture = new JLabel(" FF");
octetdeparture.setOpaque(true);
octetdeparture.setBackground(Color.yellow);
octetdeparture.setBounds(8,430,22,25);
pan.add(octetdeparture);
octetend= new JLabel(" CRC");
octetend.setOpaque(true);
octetend.setBackground(Color.red);
octetend.setBounds(250,430,30,25);
pan.add(octetend);
textapercutrame = new JLabel("");
textapercutrame.setOpaque(true);
textapercutrame.setBackground(Color.green);
textapercutrame.setBounds(45,430,200,25);
pan.add(textapercutrame);
JButton valider= new JButton("Valider");
valider.setBounds(140,475,90,30);
pan.add(valider);
JButton annuler= new JButton("Annuler");
annuler.setBounds(250,475,90,30);
pan.add(annuler);
fenetre.setContentPane(pan);
fenetre.setVisible(true);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class compteuranalogiqueplus implements ActionListener {
public void actionPerformed(ActionEvent event){
compteurtanalogique++;
lab11.setText(Integer.toString(compteurtanalogique+compteurtor));
cb.addItem("Voie analogique"+compteurtanalogique); }}
private class compteuranalogiquemoins implements ActionListener {
public void actionPerformed(ActionEvent event){
cb.removeItem("Voie analogique"+compteurtanalogique);
if(compteurtanalogique>0){
compteurtanalogique--;
lab11.setText(Integer.toString(compteurtanalogique+compteurtor));}}}
private class compteurtorplus implements ActionListener {
public void actionPerformed(ActionEvent event) {
compteurtor++;
lab11.setText(Integer.toString(compteurtor+compteurtanalogique));}}
private class compteurtormoins implements ActionListener {
public void actionPerformed(ActionEvent event)
{ if(compteurtor>0){
compteurtor--;
lab11.setText(Integer.toString(compteurtor+compteurtanalogique));}}}
public static void main(String[] args)
{
new fenetre();
}
}
Merci de ton aide.
Plusieurs manières de faire :
Soit avec getText/setText brut, mais il faut retirer les balises <html> et </html> avant de faire la concaténation de texte, pour enfin remettre les <html> et </html>
Une manière un peu plus propre de faire est de stocker la chaîne de caractères dans un String Builder sans les <html> et </html> qu'on ne rajoute que dans le setText (on n'a donc pas besoin de faire de getText, donc pas besoin d'enlever les <html> et </html> précédents)
Dans ces deux cas on ne conserve qu'un seul label, ce qui est plus simple à gérer qu'une multitude de labels qui s'accumulent.
PS. j'ai augmenté la largeur de textapercutrame pour pouvoir mieux voir :
textapercutrame.setBounds(45,430,190,25);