Pole wyboru JCheckBox

0

Mam problem. Napisałem program, który zmienia czcionkę po zaznaczeniu checkboxa. I niestety tylko trzeci chceckbox działa poprawnie mimo iż w instrukcji warunkowej chyba podałem odpowiednie warunki.
Dodam że jak bym chciał dodać kolejny ChceckBox do programu to tylko będzie program działał dla najnowszego checkboxa.

package alekcja9_jcheckbox;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
        
public class main extends JFrame {
//Dodajemy checkbox
    main(){
        initComponent();
        creatCheckBox("Pochylony");
        creatCheckBox("Pogrubiony");
        creatCheckBox("poch");           //tylko dla tego działa. Jednak jak tego damy w komentarz to zadziała dla "Pogrubiony"
        
    }
    
    void initComponent(){
        this.setBounds(300, 100, 400, 200);
        this.setTitle("Zmiana czcionki");    
    }
    
    public void creatCheckBox(String nazwa){
        this.nazwa=nazwa;
        cb=new JCheckBox(nazwa);
        panel.add(cb);
        panel2.add(etykieta);
        this.getContentPane().add(panel,BorderLayout.NORTH);
        this.getContentPane().add(panel2,BorderLayout.SOUTH);
        cb.addActionListener(new ActionBox());
         
    }
    String nazwa;
    JCheckBox cb;
    public class ActionBox implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
           etykieta.setFont(new Font(Font.MONOSPACED,Font.PLAIN,15));

          if(cb.isSelected() && nazwa=="Pogrubiony")
             etykieta.setFont(new Font(etykieta.getFont().getFamily(),Font.BOLD,25));
         
          if(cb.isSelected() && nazwa=="poch")
              etykieta.setFont(new Font(etykieta.getFont().getFamily(),Font.ITALIC,35));
 
        }
   
    }
    JPanel panel =new JPanel();
    JPanel panel2 =new JPanel();
    JLabel etykieta=new JLabel("Jestes Piękna");
    
    public static void main(String[] args) {
    new main().setVisible(true);
        
    }
    
}
 
0

Tutaj masz błąd, nadpisujesz wartość dla cb.Nie możesz mieć 3 checkBoxów w jeden zmiennej typu JCheckBox.Użyj Array lub ArrayList

 public void creatCheckBox(String nazwa){
        
        this.nazwa=nazwa;
        cb=new JCheckBox(nazwa);
        panel.add(cb);
        panel2.add(etykieta);
        this.getContentPane().add(panel,BorderLayout.NORTH);
        this.getContentPane().add(panel2,BorderLayout.SOUTH);
        cb.addActionListener(new ActionBox());
 
    }

Pozdrawiam ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1