Swing Spielfeldgroesse anpassen

dbrust_2000

Mitglied
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
 

Anhänge

  • Lampenspiel.jpg
    Lampenspiel.jpg
    19,8 KB · Aufrufe: 35
C

Camino

Gast
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???

Das kommt wohl durch das
Code:
frame.pack();
, welches den Frame auf die benötigte Grösse "packt". Oder was meinst du mit "ganz klein"?
 
Zuletzt bearbeitet von einem Moderator:

Michael...

Top Contributor
Liegt wohl daran, dass Du keinen LayoutManager (Null Layout) verwendest.

Warum dauernd der Aufruf von
Code:
update(getGraphics())
in den Buttons?
1. Niemals getGraphics in Swing Komponenten aufrufen - ausser man weiß was man tun
2. Ein direkter Aufruf von update(Graphics) ist für diesen Zweck ebenfalls ein Unding.
 
G

Gast2

Gast
[OT]z.B. um eine eig. Methode aufzurufen, in der nur ein paar Anweisungen ausgelagert wurden^^[/OT]
 

dbrust_2000

Mitglied
Hallo

Also Frage 2 hat sich erledigt.

Aber ich weiß noch keine Lösung auf Frage 1. Wie schafft man es, dass bei Klick auf die 7x7 CheckBox auch das 7x7 spielfeld erscheint?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
Yonnig JavaFX Größe von WebView an Content anpassen AWT, Swing, JavaFX & SWT 3
W JavaFX Farben dynamisch anpassen AWT, Swing, JavaFX & SWT 4
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
M Java FX größe der shapes anpassen AWT, Swing, JavaFX & SWT 0
R Swing JCTable auf Java9 anpassen AWT, Swing, JavaFX & SWT 10
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
K Swing labels anpassen AWT, Swing, JavaFX & SWT 1
J Gridpane Breite in Scrollpane automatisch anpassen AWT, Swing, JavaFX & SWT 2
M Swing GUI an Auflösung und Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 11
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
P TreeView automatisch an große von Inhalt anpassen AWT, Swing, JavaFX & SWT 3
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
G JavaFX Width von Nodes einer HBox an Tab width anpassen AWT, Swing, JavaFX & SWT 3
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
F Swing Anpassen des Layouts AWT, Swing, JavaFX & SWT 3
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
M Swing TableCellRenderer elegant anpassen AWT, Swing, JavaFX & SWT 3
D JFileChooser anpassen AWT, Swing, JavaFX & SWT 5
S JMenuBar wiederverwenden und Eventhandling anpassen AWT, Swing, JavaFX & SWT 4
A Swing Logikaufgabe: Zeilenanzahl einer JTable mit 3d String dynamisch anpassen AWT, Swing, JavaFX & SWT 2
M Swing JTabbedPane: Tab-Elemente anpassen AWT, Swing, JavaFX & SWT 3
I JTable Spalten automatisch dem Inhalt anpassen! AWT, Swing, JavaFX & SWT 6
N Swing microba - DatePicker: Feld-Hintergrund anpassen AWT, Swing, JavaFX & SWT 2
S Swing Feldgrösse anpassen ? AWT, Swing, JavaFX & SWT 3
K JSpinner in passender Breite erstellen oder automatisch anpassen AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
A DefaultCellRendere - Zellehintergrundsfarbe anpassen AWT, Swing, JavaFX & SWT 4
windl GUI an Bildschirmauflösung anpassen AWT, Swing, JavaFX & SWT 7
A Swing Anpassen der Spaltenbreite durch die länge eines Strings AWT, Swing, JavaFX & SWT 3
D JTable width automatisch anpassen AWT, Swing, JavaFX & SWT 4
N Swing KomponentenHöhe an html-Inhalt anpassen AWT, Swing, JavaFX & SWT 4
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
G Swing JComboBox anpassen AWT, Swing, JavaFX & SWT 6
W Bildgröße automatisch an Komponenten anpassen AWT, Swing, JavaFX & SWT 3
M Fenstergrösse an Bild anpassen AWT, Swing, JavaFX & SWT 13
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
T Spaltennamen jeweils der angezeigten Tabelle anpassen AWT, Swing, JavaFX & SWT 19
1 Swing Spaltenbreite and CellEditor- Komponente anpassen AWT, Swing, JavaFX & SWT 4
R JTable: Spaltenbreite automatisch anpassen AWT, Swing, JavaFX & SWT 3
B JSpinner Textgröße anpassen AWT, Swing, JavaFX & SWT 2
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
B FileChooser anpassen AWT, Swing, JavaFX & SWT 2
0 JPanel nicht an größe des JFrames anpassen AWT, Swing, JavaFX & SWT 3
B Tabelle anpassen AWT, Swing, JavaFX & SWT 6
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
B JScrollpane - Größe anpassen AWT, Swing, JavaFX & SWT 4
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
M JPanel an JFrame anpassen AWT, Swing, JavaFX & SWT 7
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
X jTable anpassen AWT, Swing, JavaFX & SWT 2
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
I Swing Optik eines JButton an JToolBar anpassen AWT, Swing, JavaFX & SWT 5
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
Mike90 JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 17
T LayoutManager GridBagLayout an Fenstergröße anpassen AWT, Swing, JavaFX & SWT 2
N JTable Zellenhöhe an Zeilenanzahl anpassen AWT, Swing, JavaFX & SWT 3
W Zellengröße in Jtable anpassen AWT, Swing, JavaFX & SWT 3
S Swing Inhalt eines Fenster bei Größenänderung anpassen (GroupLayout) AWT, Swing, JavaFX & SWT 2
F Swing Höhe eines Headers einer JTable anpassen AWT, Swing, JavaFX & SWT 4
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
G Swing Komponenten dem Hintergrundbild des JPanels anpassen? AWT, Swing, JavaFX & SWT 6
T Swing Dialoginhalt automatisch anpassen während Größenänderung AWT, Swing, JavaFX & SWT 2
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
W JTabbedPane Größe anpassen AWT, Swing, JavaFX & SWT 4
N JFrame mit Elementen an die Bildschirmgröße automatisch anpassen AWT, Swing, JavaFX & SWT 3
W Swing JScrollpane Scroller/Pfeile anpassen AWT, Swing, JavaFX & SWT 7
S ImageIcon Grösse anpassen AWT, Swing, JavaFX & SWT 2
M Swing JTable anpassen AWT, Swing, JavaFX & SWT 6
K JFrame-Größe an inneren Container anpassen AWT, Swing, JavaFX & SWT 2
M Image an Gridlayout anpassen AWT, Swing, JavaFX & SWT 5
D Aussehen von GUI-Komponenten ans Betriebssystem anpassen AWT, Swing, JavaFX & SWT 3
K Look&Feel von JMenuBar und Subkomponenten anpassen AWT, Swing, JavaFX & SWT 6
T JTree mit Checkboxen anpassen AWT, Swing, JavaFX & SWT 7
hdi Swing JTable: Selektion beim Umsortieren anpassen AWT, Swing, JavaFX & SWT 7
E Eine Seite eines Frames variabel anpassen lassen? AWT, Swing, JavaFX & SWT 10
H Schriftgröße automatisch an JLabel anpassen AWT, Swing, JavaFX & SWT 6
M Größe von JTextPane manuell bei Bedarf anpassen AWT, Swing, JavaFX & SWT 6
M Scrollbar anpassen (Position) AWT, Swing, JavaFX & SWT 6
K JButton anpassen AWT, Swing, JavaFX & SWT 2
E GridBagLayout Zellengröße anpassen AWT, Swing, JavaFX & SWT 6
M Anpassen der Größe eines JPanels (incl. gezeichneter Ampel) AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben