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);
}
}