2017-01-22 9 views
-1

Ich muss die Schriftart des Etiketts ändern, wenn der Benutzer auf einen der CheckBox es von GUI klickt. Im Moment funktioniert die GUI aber wenn ich ein Kontrollkästchen anklicke bekomme ich eine lange Fehlermeldung in der Konsole und der Text ändert sich nicht. Hier ist mein Code so weit hoffen, dass Sie mir helfen können:Kontrollkästchen ist ausgewählt

package fontp; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.JOptionPane; 


public class FontP extends Frame{ 
    Label l1; 
    Checkbox c1, c2, c3, c4; 
    Panel p1, p2; 
    CheckboxGroup cbg; 

    FontP(String title) { 
     super(title); 
     ListenerB ab = new ListenerB(); 

     Panel p1 = new Panel(); 
     Panel p2 = new Panel(); 
     Label l1 = new Label("Some random text"); 
     CheckboxGroup cbg = new CheckboxGroup(); 
     Checkbox c1 = new Checkbox("Normal", cbg, false); 
     c1.addItemListener(ab); 
     Checkbox c2 = new Checkbox("Bold", cbg, false); 
     c2.addItemListener(ab); 
     Checkbox c3 = new Checkbox("Italic", cbg, false); 
     c3.addItemListener(ab); 
     Checkbox c4 = new Checkbox("Bold/Italic", cbg, false); 
     c4.addItemListener(ab); 

     p1.add(l1); 
     p2.add(c1); p2.add(c2); p2.add(c3); p2.add(c4); 

     add(p1,BorderLayout.NORTH); 
     add(p2); 

     pack(); 
     setLocationRelativeTo(null); 
     setVisible(true); 

     addWindowListener(new WindowAdapter() { 
       public void windowClosing(WindowEvent ev) { 
        System.exit(0); 
       } 
     });  

    } 

    class ListenerB implements ItemListener { 
     public void itemStateChanged(ItemEvent ev) { 
      if(c1.getState() == true) { 
       Font f = new Font(l1.getText(), Font.PLAIN, 12); 
       l1.setFont(f);      
      } 
      else if(c2.getState() == true) { 
       Font f = new Font(l1.getText(), Font.BOLD, 12); 
       l1.setFont(f); 
      } 
      else if(c3.getState() == true) { 
       Font f = new Font(l1.getText(), Font.ITALIC, 12); 
       l1.setFont(f); 
      } 
      else if(c4.getState() == true) { 
       Font f = new Font(l1.getText(), Font.BOLD | Font.ITALIC, 12); 
       l1.setFont(f); 
      }  
     } 
    } 
} 
+2

Sie müssen uns die lange Fehlermeldung zeigen (ich denke, es ist der Stacktrace). Dann könnten wir helfen. –

Antwort

0

Sie initialisieren nicht die Felder c1, c2, ... im Konstruktor aber neue Variablen definieren. Die Felder c1, c2, ... sind also immernoch null und dies verursacht die Ausnahme. Tun Sie dies in Ihrem Konstruktor:

p1 = new Panel(); 
    p2 = new Panel(); 
    l1 = new Label("Some random text"); 
    cbg = new CheckboxGroup(); 
    c1 = new Checkbox("Normal", cbg, false); 
    c1.addItemListener(ab); 
    c2 = new Checkbox("Bold", cbg, false); 
    c2.addItemListener(ab); 
    c3 = new Checkbox("Italic", cbg, false); 
    c3.addItemListener(ab); 
    c4 = new Checkbox("Bold/Italic", cbg, false); 
    c4.addItemListener(ab); 
+0

Es hat funktioniert, danke für deine schnelle Antwort :). – Fishlex

Verwandte Themen