JRadioButtons

Status
Nicht offen für weitere Antworten.

bliko

Mitglied
Ich möchte die Schriftgröße mittel radiobuttons verändern, ich bekomme aber ständig eine Nullpointer-meldung, wie können diese buttons korrekt angesprochen werden?

Code:
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class KomponentenPanel extends JPanel implements ItemListener{
	
	private Label label1, label2;
	private int schriftgroesse, mode;
	private String schriftart = "Serif";
	private JButton button1;
	private JTextField textfeld;
	private ButtonGroup radiobuttonGruppe;
	private JComboBox fontCombo;
	private Dimension d = new Dimension(300,30);
	private JRadioButton[] rb;
	private String[] rbNamen = {"small", "medium", "large"};
	private int[] fontgr = {12, 14, 18};
	
	
	public KomponentenPanel(){
		
		// LayoutManager festlegen
		FlowLayout fl = new FlowLayout();   		
		setLayout(fl);	
		fl.setAlignment(1);
		
		// Label setzen
		label1 = new Label ("Geben Sie einen Titel ein.");
		label1.setFont(new Font("Monospaced", Font.BOLD, 12));
		label1.setAlignment(0);
		add(label1, fl);
			
		// Textfeld setzen
		textfeld = new JTextField("Textfeld", 30);
		add(textfeld, fl);
		
		//Buttons setzen
		button1 = new JButton("EINGEBEN");
		button1.setPreferredSize(d);
		add(button1);
		button1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				label2.setFont(new Font(schriftart, mode, schriftgroesse));
				label2.setText(textfeld.getText());
			}
		});
		
		// Label2 um den Titel zu formatieren
		label2 = new Label ("");
		label2.setPreferredSize(d);
		label2.setForeground(Color.white);
		label2.setBackground(Color.black);
		label2.setFont(new Font(schriftart, Font.BOLD, 12));
		label2.setAlignment(1);
		add(label2, fl);
        
        // Radio-Buttons als Gruppe auf ein neues Panel setzen
        JPanel radioButtonPanel = new JPanel();
        radiobuttonGruppe = new ButtonGroup();				// neue Radiobuttongruppe
        for (int i=0; i< rbNamen.length; i++){				// Buttons in diese Gruppe einfügen
        	rb = new JRadioButton[rbNamen.length];
        	rb[i]= new JRadioButton(rbNamen[i]);
           	radioButtonPanel.add(rb[i]);						// dem RadiobuttonPanel hinzufügen
           	radiobuttonGruppe.add(rb[i]);						// der Buttongruppe hinzufügen
           	rb[i].addActionListener(new ActionListener(){
           		public void actionPerformed(ActionEvent e){
           			if (rb[0].isSelected()== true){
        				schriftgroesse = 12;
        				label2.setFont(new Font(schriftart, mode, schriftgroesse));
        			}
        			else if (rb[1].isSelected() == true){
        				schriftgroesse = 14;
        				label2.setFont(new Font(schriftart, mode, schriftgroesse));
        			}
        			else if (rb[2].isSelected() == true){
        				schriftgroesse = 18;
        				label2.setFont(new Font(schriftart, mode, schriftgroesse));
        			}
        			System.out.println(schriftgroesse);
           		}
           	});
        }
        add(radioButtonPanel);								// dem KomponentenPanel hinzufügen
		
		// Combobox (ähnlich der Auswahlbox Choice)
        fontCombo = new JComboBox();
        fontCombo.setEditable(true);
        fontCombo.addItem("Serif");
        fontCombo.addItem("SansSerif");
        fontCombo.addItem("Monospaced");
        add(fontCombo);
        fontCombo.addItemListener(this);
	}
	
	public void itemStateChanged(ItemEvent ie){
			schriftart = (String) fontCombo.getSelectedItem();
			label2.setFont(new Font(schriftart, mode, schriftgroesse));
			System.out.println(schriftart);
	}
	
	// Version2 eingebettete Klasse, die den MouseMotionListener implementiert
	
	class MeinAL implements ActionListener{
		public void actionPerformed(ActionEvent e){
			Object source = e.getSource();
			System.out.println(source.toString());
			if (rb[0].isSelected()== true){
				schriftgroesse = 12;
				label2.setFont(new Font(schriftart, mode, schriftgroesse));
			}
			else if (source == rb[1]){
				schriftgroesse = 14;
				label2.setFont(new Font(schriftart, mode, schriftgroesse));
			}
			else if (source == rb[2]){
				schriftgroesse = 18;
				label2.setFont(new Font(schriftart, mode, schriftgroesse));
			}
			System.out.println(schriftgroesse);
		}	
	}
}
 

tfa

Top Contributor
Wenn du schon eine Exception bekommst, warum verrätst du uns nicht, in welcher Zeile das passiert? Die Suche wäre dann viel einfachen.

Davon abgesehen: Wieso legst du in jedem Schleifendurchlauf das rb-Array neu an?
 

bliko

Mitglied
ich bekomme sie aufgrund der Zeile(n) ab 109. Ich wollte so auf jeden einzelnen Button eigens zugreifen können, oder habe ich da falsch gedacht?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben