Как оптимизировать использование ArrayList - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел бы создать кнопки и метки на панели с помощью ArrayList. У меня проблемы (я не придумал код, который действительно работает) соединяя все элементы arraylistes, потому что они имеют разные свойства. например, я хочу, чтобы каждая кнопка генерировалась с ее всплывающей подсказкой в ​​определенном c месте панели Извините, если моя программа беспорядок, я новичок в этом это код, над которым я работаю

public CharMenu(PlayerChar playerChar){   
    try{
        controlFreakCharMenu = Font.createFont(Font.TRUETYPE_FONT, 
        new File("font/ControlFreakCharMenu.ttf")).deriveFont(24f);
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("font/ControlFreakCharMenu.ttf")));
    } catch (IOException|FontFormatException fontEX) {
    }    
    this.playerChar = playerChar; 
    setSize(350, 500);
    setTitle("Menu Personnage");
    setLocation(x, y);
    setResizable(true);
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    /*addWindowListener( new java.awt.event.WindowAdapter(){
    @Override
        public void windowClosing(java.awt.event.WindowEvent windowEvent){
            if(JOptionPane.showConfirmDialog(null, "Êtes vous sur de vouloir quitter?"
                + "\nVotre progression ne sera pas sauvegardée!", "Confirmation", JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
                System.exit(0);
            }
        }
    });*/ 

    GridBagLayout gbl = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();

    //Création d'onglets
    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    //ImageIcon icon = createImageIcon("images/middle.gif");
    //JComponent panelStats  = makeTextPanel("Panel #1");    
    JPanel panelStats = new JPanel ();
    panelStats.setLayout(gbl);
    constraints.weightx=1;
    constraints.weighty=1;

    tabClade = new TabCladesJoueur();
    tabClade.setPreferredSize(new Dimension (128, 128));
    constraints.gridx=3;
    constraints.gridy=2;
    constraints.gridheight=1;
    constraints.gridwidth=1;
    panelStats.add(tabClade, constraints);

    playerChar.setClade(tabClade.getClade(tabClade.getIndex()));

    ToolTipManager.sharedInstance().setInitialDelay(100);
    ToolTipManager.sharedInstance().setEnabled(true);

    labEXP = new JLabel("EXP :"){
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
};
    JLabel texte1=new JLabel("ceci determine votre expérience");
    Font myFont = new Font("Serif", Font.BOLD,12);
    texte1.setFont(myFont);
    labEXP.setToolTipText(texte1.getText());
    labEXP.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.FIRST_LINE_START;
    constraints.weighty = 0;
    constraints.gridx=8;
    constraints.gridy=2;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(labEXP, constraints);

    labREP = new JLabel("REP :")  {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-55));
 }
};
    String texte2=("<html><center>"+"Votre réputation:<br> Son niveau augmente ou diminue selon vos actions,<br> et peut altérer vos interactions avec certains personnages. "+"<center><html>");
    labREP.setToolTipText(texte2);
    labREP.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.LINE_START;
    constraints.gridx=8;
    constraints.gridy=2;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(labREP, constraints);

    labBUX = new JLabel("BUX :") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
}; 
    String texte3=("ceci est votre BUXX");
    labBUX.setToolTipText(texte3);
    labBUX.setFont(controlFreakCharMenu);   
    constraints.anchor = GridBagConstraints.LAST_LINE_START;
    constraints.gridx=8;
    constraints.gridy=2;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(labBUX, constraints);

    exp = new JLabel("1000");
    exp.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.PAGE_START;
    constraints.gridx=9;
    constraints.gridy=1;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(exp, constraints);

    rep = new JLabel("1000");
    rep.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.CENTER;
    constraints.gridx=9;
    constraints.gridy=1;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(rep, constraints);

    bux = new JLabel("1000");
    bux.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.PAGE_END;
    constraints.gridx=9;
    constraints.gridy=1;
    constraints.gridheight=2;
    constraints.gridwidth=2;
    panelStats.add(bux, constraints);

    //Boutons de sélection du portrait
    precedentPortrait = new JButton( new ImageIcon("img/FlecheGauche.png") ) {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    Font CharMenuFont = new Font("ControlFreak", Font.ITALIC , 18);
    tip.setFont(CharMenuFont);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-20));
 }
};
    String texte4=("Selectioner précedent portrait ");
    precedentPortrait.setToolTipText(texte4);
    precedentPortrait.setFont(controlFreakCharMenu);
    constraints.gridx=2;
    constraints.gridy=8;
    constraints.gridheight=1;
    constraints.gridwidth=1;
    precedentPortrait.addActionListener(geaCharMenuButton);
    panelStats.add(precedentPortrait, constraints);

    prochainPortrait = new JButton( new ImageIcon("img/FlecheDroite.png") ) {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
};
    String texte5=("Selectionner prochain portait ");
    prochainPortrait.setToolTipText(texte5);
    prochainPortrait.setFont(controlFreakCharMenu);
    constraints.gridx=3;
    constraints.gridy=8;
    constraints.gridheight=1;
    constraints.gridwidth=1;
    prochainPortrait.addActionListener(geaCharMenuButton);
    panelStats.add(prochainPortrait, constraints);

    //Noms des statistiques
    labPointsDispo = new JLabel(" Points restants :") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-20));
 }
};
    String texte6=("Distribuer tous les points ");
    labPointsDispo.setToolTipText(texte6);
    labPointsDispo.setFont(controlFreakCharMenu);
    constraints.fill=GridBagConstraints.HORIZONTAL;
    constraints.weightx=1;
    constraints.weighty=1;
    constraints.gridx=3;
    constraints.gridy=10;
    constraints.gridheight=1;
    constraints.gridwidth=2;
    panelStats.add(labPointsDispo, constraints);

    labForce = new JLabel(" Force :") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
};
    String texte7=("<html><center>"+"Détermine la vitalité maximum et votre aptitude avec le gant MC "+"<center><html>");
    labForce.setToolTipText(texte7);
    labForce.setFont(controlFreakCharMenu);
    constraints.gridy=12;
    panelStats.add(labForce, constraints);

    labDexterite = new JLabel(" Dexterité :") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
};
    String texte8=("<html><center>"+"Détermine l'efficacité des items et votre aptitude avec le fusil relativiste. "+"<center><html>");
    labDexterite.setToolTipText(texte8);
    labDexterite.setFont(controlFreakCharMenu);
    constraints.gridy=14;
    panelStats.add(labDexterite, constraints);

    labIntelligence = new JLabel(" Intelligence :") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-25));
 }
};
    String texte9=("<html><center>"+"Détermine l'amplitude de tous les talents et votre aptitude avec la torche solaire. "+"<center><html>");
    labIntelligence.setToolTipText(texte9);
    labIntelligence.setFont(controlFreakCharMenu);
    constraints.gridy=16;
    panelStats.add(labIntelligence, constraints);



    //Affichage du nombre de points investis
    pointsDispo = new JLabel( Integer.toString(playerChar.getPointsDispo()) ); 
    pointsDispo.setFont(controlFreakCharMenu);
    constraints.gridx=7;
    constraints.gridy=10;
    constraints.gridheight=1;
    constraints.gridwidth=1;
    panelStats.add(pointsDispo, constraints); 

    force = new JLabel( Integer.toString(playerChar.getForce()) );
    force.setFont(controlFreakCharMenu);
    constraints.gridy=12;
    panelStats.add(force, constraints);

    dexterite = new JLabel( Integer.toString(playerChar.getDexterite()) ); 
    dexterite.setFont(controlFreakCharMenu);
    constraints.gridy=14;
    panelStats.add(dexterite, constraints);

    intelligence = new JLabel( Integer.toString(playerChar.getIntelligence()) ); 
    intelligence.setFont(controlFreakCharMenu);
    constraints.gridy=16;
    panelStats.add(intelligence, constraints);

    charisme = new JLabel( Integer.toString(playerChar.getCharisme()) ); 
    charisme.setFont(controlFreakCharMenu);
    constraints.gridy=18;
    panelStats.add(charisme, constraints);

    volonte = new JLabel( Integer.toString(playerChar.getCharisme()) ); 
    volonte.setFont(controlFreakCharMenu);
    constraints.gridy=20;
    panelStats.add(volonte, constraints);

    //Créations des boutons d'attribution de points
    plusForce = new JButton("+");
    plusForce.setFont(controlFreakCharMenu);
    constraints.gridx=9;
    constraints.gridy=12;
    plusForce.addActionListener(geaCharMenuButton);
    panelStats.add(plusForce, constraints);

    moinsForce = new JButton("-");
    moinsForce.setFont(controlFreakCharMenu);
    constraints.gridx=8;
    moinsForce.addActionListener(geaCharMenuButton);
    panelStats.add(moinsForce, constraints);

    plusDexterite = new JButton("+");
    plusDexterite.setFont(controlFreakCharMenu);
    constraints.gridx=9;
    constraints.gridy=14;
    plusDexterite.addActionListener(geaCharMenuButton);
    panelStats.add(plusDexterite, constraints);

    moinsDexterite = new JButton("-");
    moinsDexterite.setFont(controlFreakCharMenu);
    constraints.gridx=8;
    moinsDexterite.addActionListener(geaCharMenuButton);
    panelStats.add(moinsDexterite, constraints);

    plusIntelligence = new JButton("+");
    plusIntelligence.setFont(controlFreakCharMenu);
    constraints.gridx=9;
    constraints.gridy=16;
    plusIntelligence.addActionListener(geaCharMenuButton);
    panelStats.add(plusIntelligence, constraints);

    moinsIntelligence = new JButton("-");
    moinsIntelligence.setFont(controlFreakCharMenu);
    constraints.gridx=8;
    moinsIntelligence.addActionListener(geaCharMenuButton);
    panelStats.add(moinsIntelligence, constraints);


    reset = new JButton("Réinitialiser");
    reset.setFont(controlFreakCharMenu);
    reset.setPreferredSize(new Dimension(100, 25));
    constraints.gridy=10;
    constraints.gridheight=1;
    constraints.gridwidth=2;
    reset.addActionListener(geaCharMenuButton);
    panelStats.add(reset, constraints);

    confirmer = new JButton("Confirmer le personnage") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-55));
 }
};
    String texte12=("<html><center>"+"Sauvegarder les changements appliqués lors de <br>  la création du personnage ou d'un gain en niveau d'expérience.<br>Cette action est irréversible. "+"<html>");
    confirmer.setToolTipText(texte12);
    confirmer.setFont(controlFreakCharMenu);
    constraints.anchor = GridBagConstraints.LAST_LINE_START;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.gridx=0;
    constraints.gridy=22;
    constraints.gridheight=1;
    constraints.gridwidth=10;
    confirmer.addActionListener(geaCharMenuButton);
    panelStats.add(confirmer, constraints);

    vitaliteBar = new JProgressBar() {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-35));
 }
};
    String texte13=("<html><center>"+"Détermine l'état de vos fonctions vitales. <br> Si elle atteint zéro, vous mourrez."+"<center><html>");
    vitaliteBar.setToolTipText(texte13);
    vitaliteBar.setValue(80);
    vitaliteBar.setFont(controlFreakCharMenu);
    vitaliteBar.setPreferredSize(new Dimension(10,35));
    vitaliteBar.setStringPainted(true);
    vitaliteBar.setString("Vitalité : " + (vitaliteBar.getPercentComplete()*100)+ "%");
    constraints.anchor = GridBagConstraints.LAST_LINE_START;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.gridy=24;
    constraints.gridheight=0;
    constraints.gridwidth=0;
    panelStats.add(vitaliteBar, constraints);

    //Ajout des onglets
    tabbedPane.add("PER", panelStats);
    tabbedPane.setFont(controlFreakCharMenu);  

    //Onglet des talentButtons
    GridLayout glTalents = new GridLayout(6,2);       
    JPanel panelTalents = new JPanel ();
    panelTalents.setLayout(glTalents);
    tabbedPane.add("TAL", panelTalents);

    talentButtonAlchimiste = new JToggleButton("Alchimiste") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte14=("<html><center>"+"Bonus spécial pour chaque item et régénération automatique en combat.<br> Requiert x DEX et y INT."+"<center><html>");
    talentButtonAlchimiste .setToolTipText(texte14);
    talentButtonAlchimiste.setFont(controlFreakCharMenu);
    talentButtonAlchimiste.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonAlchimiste);

    talentButtonAssassin = new JToggleButton("Assassin") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte15=("<html><center>"+"Bonus variés durant les premiers tours d'un combat et possibilité d'infliger des coups critiques. <br> Requiert x DEX. "+"<center><html>");
    talentButtonAssassin.setToolTipText(texte15);
    talentButtonAssassin.setFont(controlFreakCharMenu);
    talentButtonAssassin.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonAssassin);

    talentButtonBoxeur = new JToggleButton ("Boxeur") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte16=("<html><center>"+"L'attaque \"point cinétique\" du gant MC devient beaucoup plus puissante. <br> Requiert x FOR."+"<center><html>");
    talentButtonBoxeur.setToolTipText(texte16);
    talentButtonBoxeur.setFont(controlFreakCharMenu);
    talentButtonBoxeur.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonBoxeur);    

    talentButtonCapitaliste = new JToggleButton("Capitaliste") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte17=("<html><center>"+" Peut acheter des items et bonus en plein combat. <br> Requiert x CHA. "+"<center><html>");
    talentButtonCapitaliste.setToolTipText(texte17);
    talentButtonCapitaliste.setFont(controlFreakCharMenu);
    talentButtonCapitaliste.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonCapitaliste);
    //Peut acheter des bonus en plein combat
    //CHA

    talentButtonDresseur = new JToggleButton("Dresseur") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte18=("<html><center>"+"Peut appeler des animaux apprivoisés ou domptés au combat. <br> Requiert x CHA. "+"<center><html>");
    talentButtonDresseur.setToolTipText(texte18);
    talentButtonDresseur.setFont(controlFreakCharMenu);
    talentButtonDresseur.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonDresseur);  

    talentButtonGuerillero = new JToggleButton("Guerillero") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte19=("<html><center>"+"Peut temporairement fuir le combat pour un tour, puis revenir avec des bonus importants. <br> Requiert x DEX."+"<center><html>");
    talentButtonGuerillero.setToolTipText(texte19);
    talentButtonGuerillero.setFont(controlFreakCharMenu);
    talentButtonGuerillero.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonGuerillero);    

    talentButtonHero = new JToggleButton("Héro") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte20=("<html><center>"+"Dialogues boni au cours des combats. <br> Requiert x CHA et y VOL. "+"<center><html>");
    talentButtonHero.setToolTipText(texte20);
    talentButtonHero.setFont(controlFreakCharMenu);
    talentButtonHero.addActionListener(geaCharMenuToggle);
    panelTalents.add(talentButtonHero);

    talentButtons = new ButtonGroup();
    talentButtons.add(talentButtonAlchimiste);
    talentButtons.add(talentButtonAssassin);
    talentButtons.add(talentButtonBoxeur);
    talentButtons.add(talentButtonCapitaliste);
    talentButtons.add(talentButtonDresseur);
    talentButtons.add(talentButtonGuerillero);
    talentButtons.add(talentButtonHero);

    GridLayout glInventaire = new GridLayout(10,2);
    JPanel panelInventaire = new JPanel ();
    panelInventaire.setLayout(glInventaire);
    tabbedPane.add("INV", panelInventaire);

    labVoid = new JLabel ("");
    panelInventaire.add(labVoid);     
    labVoid = new JLabel ("");
    panelInventaire.add(labVoid); 

    armeButtonGantMC = new JToggleButton("Gant MC") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
     return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte26=("<html><center>"+" Gantelet magnétocinétique permettant d'attirer ou de repousser un ennemi, <br> ou frapper avec une force redoutable lorsque celui-ci est suffisament proche."+"<center><html>");
    armeButtonGantMC.setToolTipText(texte26);
    armeButtonGantMC.setFont(controlFreakCharMenu);
    panelInventaire.add(armeButtonGantMC);    

    armeButtonFusilRelativiste = new JToggleButton("Fusil Relativiste") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
     return new Point(event.getX()-15 , (event.getY()-40));
 }
};
    String texte27=("<html><center>"+"Arme capable d'accélérer des projectiles à des vitesses proches, voir dépassant celle de la lumière. <br> Accepte trois types de munitions (bradyon, luxon, tachyon) et doit être chargé pour faire feu."+"<center><html>");
    armeButtonFusilRelativiste.setToolTipText(texte27);
    armeButtonFusilRelativiste.setFont(controlFreakCharMenu);
    panelInventaire.add(armeButtonFusilRelativiste);    

    armeButtonProjecteurTonal = new JToggleButton("Proj. Tonal") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-60));
 }
};
    String texte28=("<html><center>"+" Projecteur tonal: <br> Canon sonique inséré dans la paume de la main, infligeant des malus important lorsqu'utilisé à la tonalité appropriée.  <br> L'utilisateur doit estimer la tonalité idéale. "+"<center><html>");
    armeButtonProjecteurTonal.setToolTipText(texte28);
    armeButtonProjecteurTonal.setFont(controlFreakCharMenu);
    panelInventaire.add(armeButtonProjecteurTonal);  

    armeButtonTorcheSolaire = new JToggleButton("Torche Solaire") {
        @Override
    public JToolTip createToolTip() {
    JToolTip tip = super.createToolTip();
    tip.setBackground(Color.YELLOW);
    tip.setForeground(Color.RED);
    return tip;   
  }
        @Override
   public Point getToolTipLocation(MouseEvent event) {
    return new Point(event.getX()-15 , (event.getY()-60));
 }
};
    String texte29=("<html><center>"+"Laser extrêmement puissant monté au poignet, pompé par une charge explosive.  <br> Consomme une charge chimique, électrique, nucléaire ou psionique au choix du joueur, chacune offrant ses propres avantages.  <br> Ne peut être utilisé qu'une fois tous les 4 tours."+"<center><html>");
    armeButtonTorcheSolaire.setToolTipText(texte29);
    armeButtonTorcheSolaire.setFont(controlFreakCharMenu);
    panelInventaire.add(armeButtonTorcheSolaire);   

    armeButtons = new ButtonGroup();
    armeButtons.add(armeButtonGantMC);
    armeButtons.add(armeButtonFusilRelativiste);
    armeButtons.add(armeButtonTorcheSolaire);
    armeButtons.add(armeButtonProjecteurTonal); 

спасибо за помощь

...