Hallo
Ich habe folgende Probleme
1. In meinem Frame befindet sich ein Panel für das Spielfeld (Dort liegt eine Matrix an ColorButtons) und eine Buttongroup. Ich möchte die feldgroesse des Spielfeldes je nach angeklickter Groesse ändern. Leider verändert sich aber nix.
2. Außerdem ist der Frame bei der ersten Ausführung ganz klein. Ich muss ihn erst vergrößeren. Wieso? Ich habe doch setSize gesetzt???
[JAVA=42]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 19.11.2012
* @author
*/
public class Lampenspiel {
// Anfang Attribute
private JFrame frame;
private int feldgroesse;
private JButton start = new JButton("Start");
private JPanel spielfeld = new JPanel(null, true);
private JPanel buttonfeld = new JPanel(null, true);
private ColorButton lampenfeld[][] ;
private LampenListener lampenListener = new LampenListener();
private String ziffer;
private int status;
private JLabel jLabel1 = new JLabel();
private JRadioButton jRadioButton1 = new JRadioButton();
private JRadioButton jRadioButton2 = new JRadioButton();
private JRadioButton jRadioButton3 = new JRadioButton();
private JRadioButton jRadioButton4 = new JRadioButton();
private JRadioButton jRadioButton5 = new JRadioButton();
private JRadioButton jRadioButton6 = new JRadioButton();
private JRadioButton jRadioButton7 = new JRadioButton();
private ButtonGroup jButtonGroup1 = new ButtonGroup();
private JLabel jLabel2 = new JLabel();
private Container cp;
// Ende Attribute
public Lampenspiel(String title) {
// Frame-Initialisierung
feldgroesse=3;
frame = new JFrame(title);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 500;
int frameHeight = 500;
frame.setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - frame.getSize().width) / 2;
int y = (d.height - frame.getSize().height) / 2;
frame.setLocation(x, y);
frame.setResizable(true);
//frame.setPreferredSize(d);
cp = frame.getContentPane();
cp.setLayout(null);
init();
//jPanel2.setBounds(56, 228, 156, 37);
jLabel1.setBounds(64, 192, 147, 25);
cp.add(jLabel1);
jRadioButton1.setBounds(273, 56, 90, 25);
jRadioButton1.setText("3x3");
jRadioButton1.setActionCommand("3");
jRadioButton1.setOpaque(false);
jRadioButton1.addActionListener(lampenListener);
cp.add(jRadioButton1);
jRadioButton2.setBounds(273, 90, 90, 25);
jRadioButton2.setText("4x4");
jRadioButton2.setActionCommand("4");
jRadioButton2.setOpaque(false);
jRadioButton2.addActionListener(lampenListener);
cp.add(jRadioButton2);
jRadioButton3.setBounds(273, 130, 90, 25);
jRadioButton3.setText("5x5");
jRadioButton3.setActionCommand("5");
jRadioButton3.setOpaque(false);
jRadioButton3.addActionListener(lampenListener);
cp.add(jRadioButton3);
jRadioButton4.setBounds(273, 170, 90, 25);
jRadioButton4.setText("6x6");
jRadioButton4.setActionCommand("6");
jRadioButton4.setOpaque(false);
jRadioButton4.addActionListener(lampenListener);
cp.add(jRadioButton4);
jRadioButton5.setBounds(273, 210, 90, 25);
jRadioButton5.setText("7x7");
jRadioButton5.setActionCommand("7");
jRadioButton5.setOpaque(false);
jRadioButton5.addActionListener(lampenListener);
cp.add(jRadioButton5);
jRadioButton6.setBounds(273, 250, 90, 25);
jRadioButton6.setText("8x8");
jRadioButton6.setActionCommand("8");
jRadioButton6.setOpaque(false);
jRadioButton6.addActionListener(lampenListener);
cp.add(jRadioButton6);
jRadioButton7.setBounds(273, 290, 90, 25);
jRadioButton7.setText("9x9");
jRadioButton7.setActionCommand("9");
jRadioButton7.setOpaque(false);
jRadioButton7.addActionListener(lampenListener);
cp.add(jRadioButton7);
jButtonGroup1.add(jRadioButton1);
jButtonGroup1.add(jRadioButton2);
jButtonGroup1.add(jRadioButton3);
jButtonGroup1.add(jRadioButton4);
jButtonGroup1.add(jRadioButton5);
jButtonGroup1.add(jRadioButton6);
jButtonGroup1.add(jRadioButton7);
jLabel2.setBounds(224, 0, 171, 41);
jLabel2.setText("Treffe deine Auswahl");
cp.add(jLabel2);
// Ende Komponenten
frame.pack();
frame.setVisible(true);
} // end of public Lampenspiel
// Anfang Methoden
public void init(){
spielfeld.setBounds(30, 30, 200, 200);
spielfeld.setLayout(new GridLayout(feldgroesse,feldgroesse));
spielfeld.setOpaque(false);
cp.add(spielfeld);
lampenfeld= new ColorButton[feldgroesse][feldgroesse];
buttonfeld.setBounds(30, 300, 150, 37);
buttonfeld.setLayout(new BorderLayout());
start.setBounds(218, 183, 75, 25);
buttonfeld.setOpaque(false);
buttonfeld.add(start);
cp.add(buttonfeld);
//cp.add(start);
// Anfang Komponenten
for (int i = 0;i<feldgroesse;i++ ){
for(int j = 0;j<feldgroesse;j++){
Font meinfont = new Font("Monospaced", 0, 22-2*feldgroesse);
ziffer = String.valueOf(feldgroesse*i+j+1);
lampenfeld[j] = new ColorButton();
lampenfeld[j].setText(ziffer);
lampenfeld[j].setFont(meinfont);
lampenfeld[j].setForeground(Color.white);
Insets rand = new Insets(1,1,1,1);
lampenfeld[j].setMargin(rand);
spielfeld.add(lampenfeld[j]);
lampenfeld[j].addActionListener(lampenListener);
}//end for
} // end of for
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
for (int i = 0;i<feldgroesse;i++ ){
for(int j = 0;j<feldgroesse;j++){
lampenfeld[j].aufFarbeSetzen(Color.blue);
}//end for
} // end of for
//frame.update(frame.getGraphics());
}
});
} // init
public String getSelectedRadioButton(ButtonGroup bg) {
for (java.util.Enumeration<AbstractButton> e = bg.getElements(); e.hasMoreElements() {
AbstractButton b = e.nextElement();
if (b.isSelected()) return b.getText();
}
return null;
}
public void feldgroesseSetzen(int size) {
feldgroesse=size;
}
// Ende Methoden
public static void main(String[] args) {
new Lampenspiel("Lampenspiel");
} // end of main
class LampenListener implements ActionListener {
public void actionPerformed(ActionEvent e){
Object obj =e.getSource();
if (obj instanceof ColorButton) {
ColorButton quelle = (ColorButton)e.getSource();
int index = Integer.parseInt(quelle.getText());
if (index==1) {
// dann passiert etwas
}
if (obj instanceof JRadioButton) {
feldgroesseSetzen(Integer.parseInt(e.getActionCommand()));
System.out.println(e.getActionCommand() + " Feldgroesse " + feldgroesse);
System.out.println(getSelectedRadioButton(jButtonGroup1));
//init();
//frame.update(spielfeld.getGraphics());
}
if (ColorButton.gibZaehler()==feldgroesse*feldgroesse) {
jLabel1.setText("HURRA");
} // end of if
}
}
} // end of class Lampenspiel[/code]
Hier noch meine Klasse ColorButton
[JAVA=42]import java.awt.*;
import javax.swing.*;
class ColorButton extends JButton {
Color farbe = Color.blue;
static private int zaehler;
ColorButton(){;
setBackground(farbe);
update(getGraphics());
}
public void farbeWechseln(){
if (farbe == Color.yellow){
farbe= Color.blue;
zaehler--;
}
else {
farbe = Color.yellow;
zaehler++;
}
setBackground(farbe);
update(getGraphics());
}
public void aufFarbeSetzen(Color color){
farbe = color;
setBackground(farbe);
update(getGraphics());
zaehler++;
}
public static int gibZaehler(){
return zaehler;
}
}[/code]
vielen Dank
dbrust_2000
Ich habe folgende Probleme
1. In meinem Frame befindet sich ein Panel für das Spielfeld (Dort liegt eine Matrix an ColorButtons) und eine Buttongroup. Ich möchte die feldgroesse des Spielfeldes je nach angeklickter Groesse ändern. Leider verändert sich aber nix.
2. Außerdem ist der Frame bei der ersten Ausführung ganz klein. Ich muss ihn erst vergrößeren. Wieso? Ich habe doch setSize gesetzt???
[JAVA=42]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 19.11.2012
* @author
*/
public class Lampenspiel {
// Anfang Attribute
private JFrame frame;
private int feldgroesse;
private JButton start = new JButton("Start");
private JPanel spielfeld = new JPanel(null, true);
private JPanel buttonfeld = new JPanel(null, true);
private ColorButton lampenfeld[][] ;
private LampenListener lampenListener = new LampenListener();
private String ziffer;
private int status;
private JLabel jLabel1 = new JLabel();
private JRadioButton jRadioButton1 = new JRadioButton();
private JRadioButton jRadioButton2 = new JRadioButton();
private JRadioButton jRadioButton3 = new JRadioButton();
private JRadioButton jRadioButton4 = new JRadioButton();
private JRadioButton jRadioButton5 = new JRadioButton();
private JRadioButton jRadioButton6 = new JRadioButton();
private JRadioButton jRadioButton7 = new JRadioButton();
private ButtonGroup jButtonGroup1 = new ButtonGroup();
private JLabel jLabel2 = new JLabel();
private Container cp;
// Ende Attribute
public Lampenspiel(String title) {
// Frame-Initialisierung
feldgroesse=3;
frame = new JFrame(title);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
int frameWidth = 500;
int frameHeight = 500;
frame.setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - frame.getSize().width) / 2;
int y = (d.height - frame.getSize().height) / 2;
frame.setLocation(x, y);
frame.setResizable(true);
//frame.setPreferredSize(d);
cp = frame.getContentPane();
cp.setLayout(null);
init();
//jPanel2.setBounds(56, 228, 156, 37);
jLabel1.setBounds(64, 192, 147, 25);
cp.add(jLabel1);
jRadioButton1.setBounds(273, 56, 90, 25);
jRadioButton1.setText("3x3");
jRadioButton1.setActionCommand("3");
jRadioButton1.setOpaque(false);
jRadioButton1.addActionListener(lampenListener);
cp.add(jRadioButton1);
jRadioButton2.setBounds(273, 90, 90, 25);
jRadioButton2.setText("4x4");
jRadioButton2.setActionCommand("4");
jRadioButton2.setOpaque(false);
jRadioButton2.addActionListener(lampenListener);
cp.add(jRadioButton2);
jRadioButton3.setBounds(273, 130, 90, 25);
jRadioButton3.setText("5x5");
jRadioButton3.setActionCommand("5");
jRadioButton3.setOpaque(false);
jRadioButton3.addActionListener(lampenListener);
cp.add(jRadioButton3);
jRadioButton4.setBounds(273, 170, 90, 25);
jRadioButton4.setText("6x6");
jRadioButton4.setActionCommand("6");
jRadioButton4.setOpaque(false);
jRadioButton4.addActionListener(lampenListener);
cp.add(jRadioButton4);
jRadioButton5.setBounds(273, 210, 90, 25);
jRadioButton5.setText("7x7");
jRadioButton5.setActionCommand("7");
jRadioButton5.setOpaque(false);
jRadioButton5.addActionListener(lampenListener);
cp.add(jRadioButton5);
jRadioButton6.setBounds(273, 250, 90, 25);
jRadioButton6.setText("8x8");
jRadioButton6.setActionCommand("8");
jRadioButton6.setOpaque(false);
jRadioButton6.addActionListener(lampenListener);
cp.add(jRadioButton6);
jRadioButton7.setBounds(273, 290, 90, 25);
jRadioButton7.setText("9x9");
jRadioButton7.setActionCommand("9");
jRadioButton7.setOpaque(false);
jRadioButton7.addActionListener(lampenListener);
cp.add(jRadioButton7);
jButtonGroup1.add(jRadioButton1);
jButtonGroup1.add(jRadioButton2);
jButtonGroup1.add(jRadioButton3);
jButtonGroup1.add(jRadioButton4);
jButtonGroup1.add(jRadioButton5);
jButtonGroup1.add(jRadioButton6);
jButtonGroup1.add(jRadioButton7);
jLabel2.setBounds(224, 0, 171, 41);
jLabel2.setText("Treffe deine Auswahl");
cp.add(jLabel2);
// Ende Komponenten
frame.pack();
frame.setVisible(true);
} // end of public Lampenspiel
// Anfang Methoden
public void init(){
spielfeld.setBounds(30, 30, 200, 200);
spielfeld.setLayout(new GridLayout(feldgroesse,feldgroesse));
spielfeld.setOpaque(false);
cp.add(spielfeld);
lampenfeld= new ColorButton[feldgroesse][feldgroesse];
buttonfeld.setBounds(30, 300, 150, 37);
buttonfeld.setLayout(new BorderLayout());
start.setBounds(218, 183, 75, 25);
buttonfeld.setOpaque(false);
buttonfeld.add(start);
cp.add(buttonfeld);
//cp.add(start);
// Anfang Komponenten
for (int i = 0;i<feldgroesse;i++ ){
for(int j = 0;j<feldgroesse;j++){
Font meinfont = new Font("Monospaced", 0, 22-2*feldgroesse);
ziffer = String.valueOf(feldgroesse*i+j+1);
lampenfeld[j] = new ColorButton();
lampenfeld[j].setText(ziffer);
lampenfeld[j].setFont(meinfont);
lampenfeld[j].setForeground(Color.white);
Insets rand = new Insets(1,1,1,1);
lampenfeld[j].setMargin(rand);
spielfeld.add(lampenfeld[j]);
lampenfeld[j].addActionListener(lampenListener);
}//end for
} // end of for
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
for (int i = 0;i<feldgroesse;i++ ){
for(int j = 0;j<feldgroesse;j++){
lampenfeld[j].aufFarbeSetzen(Color.blue);
}//end for
} // end of for
//frame.update(frame.getGraphics());
}
});
} // init
public String getSelectedRadioButton(ButtonGroup bg) {
for (java.util.Enumeration<AbstractButton> e = bg.getElements(); e.hasMoreElements() {
AbstractButton b = e.nextElement();
if (b.isSelected()) return b.getText();
}
return null;
}
public void feldgroesseSetzen(int size) {
feldgroesse=size;
}
// Ende Methoden
public static void main(String[] args) {
new Lampenspiel("Lampenspiel");
} // end of main
class LampenListener implements ActionListener {
public void actionPerformed(ActionEvent e){
Object obj =e.getSource();
if (obj instanceof ColorButton) {
ColorButton quelle = (ColorButton)e.getSource();
int index = Integer.parseInt(quelle.getText());
if (index==1) {
// dann passiert etwas
}
if (obj instanceof JRadioButton) {
feldgroesseSetzen(Integer.parseInt(e.getActionCommand()));
System.out.println(e.getActionCommand() + " Feldgroesse " + feldgroesse);
System.out.println(getSelectedRadioButton(jButtonGroup1));
//init();
//frame.update(spielfeld.getGraphics());
}
if (ColorButton.gibZaehler()==feldgroesse*feldgroesse) {
jLabel1.setText("HURRA");
} // end of if
}
}
} // end of class Lampenspiel[/code]
Hier noch meine Klasse ColorButton
[JAVA=42]import java.awt.*;
import javax.swing.*;
class ColorButton extends JButton {
Color farbe = Color.blue;
static private int zaehler;
ColorButton(){;
setBackground(farbe);
update(getGraphics());
}
public void farbeWechseln(){
if (farbe == Color.yellow){
farbe= Color.blue;
zaehler--;
}
else {
farbe = Color.yellow;
zaehler++;
}
setBackground(farbe);
update(getGraphics());
}
public void aufFarbeSetzen(Color color){
farbe = color;
setBackground(farbe);
update(getGraphics());
zaehler++;
}
public static int gibZaehler(){
return zaehler;
}
}[/code]
vielen Dank
dbrust_2000