Hey Leute ich habe ein kleines Problem beim Aktualisieren ich habe 2 views für ein model erstellt wenn ich nun im einen view aus einer liste eine zahl auswähle und dann den button drücke, soll in einem array an der position eine eins geschrieben werden das klappt auch aber jetzt kommts zu meinem zweiten view dort werden alle werte ausgelesen und die Buttons die eine 1 haben als nicht anklickbar angezeigt aber des klappt net so wie ich will hier mal die beiden codes:
Mainview.java
und hier die gameoverview.java
Ich hoffe ihr könnt mir da weiterhelfen!
Danke schonmal!
Mainview.java
Code:
package game;
import javax.swing.*;
import java.awt.event.*;
import java.util.Observer;
import java.util.Observable;
import javax.swing.JComboBox;
import java.util.*;
public class GameViewMain extends JFrame implements Observer {
private JButton bt_case = new JButton("Koffer auswählen");
private GameModel m_GameModel;
// private GameOverview v_GameOverview;
private JMenuItem mi_newgame;
private JMenuItem mi_quit;
private int casenumber;
Random rand = new Random();
public GameViewMain(GameModel model)
{
// Model zuweisen und zum Beobachter machen
m_GameModel = model;
m_GameModel.addObserver(this);
//v_GameOverview = view;
// ComboBox füllen
String[] testliste = new String[10];
for(int i = 0; i < 10; i++)
{
testliste[i] = Integer.toString(i+1);
}
JComboBox testchoice = new JComboBox(testliste);
// Panel erstellen
JPanel content = new JPanel();
content.add(testchoice);
content.add(bt_case);
// Listeners hinzufügen
bt_case.addActionListener(new SaveCaseListener());
// Fensteroptionen
this.setContentPane(content);
this.setSize(400,200);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Listener zum Abfragen der ComboBox
class CaseListener implements ActionListener {
public void actionPerformed(ActionEvent e)
{
JComboBox combo = (JComboBox)e.getSource();
casenumber = (int)combo.getSelectedIndex();
}
}
class SaveCaseListener implements ActionListener {
public void actionPerformed(ActionEvent e)
{
m_GameModel.setCase(casenumber);
bt_case.setEnabled(false);
v_GameOverview.setVisible(true);
}
}
// Aufruf bei Veränderung am MainView
public void update(Observable o, Object arg)
{
}
}
und hier die gameoverview.java
Code:
package game;
import javax.swing.*;
import java.util.Observer;
import java.util.Observable;
public class GameOverview extends JFrame implements Observer {
GameModel m_GameModel;
JButton btn_cases[] = new JButton[26];
JPanel p_cases = new JPanel();
int[] ar_chosenCases = new int[26];
GameOverview(GameModel m)
{
m_GameModel = m;
m_GameModel.addObserver(this);
ar_chosenCases = m_GameModel.notChosenCases();
for(int i = 0; i < ar_chosenCases.length; i++)
{
if(ar_chosenCases[i] == 1)
{
btn_cases[i] = new JButton();
btn_cases[i].setText(Integer.toString(i+1));
btn_cases[i].setEnabled(false);
} else {
btn_cases[i] = new JButton();
btn_cases[i].setText(Integer.toString(i+1));
btn_cases[i].setEnabled(true);
}
p_cases.add(btn_cases[i]);
}
this.setContentPane(p_cases);
this.setSize(400,200);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void update(Observable o, Object arg)
{
ar_chosenCases = m_GameModel.notChosenCases();
for(int i = 0; i < ar_chosenCases.length; i++)
{
if(ar_chosenCases[i] == 1)
{
btn_cases[i] = new JButton();
btn_cases[i].setText(Integer.toString(i+1));
btn_cases[i].setEnabled(false);
} else {
btn_cases[i] = new JButton();
btn_cases[i].setText(Integer.toString(i+1));
btn_cases[i].setEnabled(true);
}
p_cases.add(btn_cases[i]);
}
repaint();
}
}
Ich hoffe ihr könnt mir da weiterhelfen!
Danke schonmal!
Zuletzt bearbeitet: