ich weiß, es ist nicht die feine art, direkt nach der registrierung um hilfe bei code zu bitten, aber ich muss diese aufgabe bis 23:30 lösen, da ich dieses projekt um 24:00 abgeben muss.
nun zu meinem problem. ich habe einen Container, der eine beschreibung und andere dinge anzeigen soll, wenn auf einen JButton mit einer figur geklickt wird. das problem ist nun, dass nicht der neue Container angezeigt werden kann, wenn ich nicht die hauptklasse ausblende und neu einblende oder mit pack() neu anzeigen lasse. allerdings, ist das ein und ausblenden, bzw. das pack(), deutlich zu sehen. ich würde mich freuen, wenn mir jemand eine lösung für mein problem geben könnte oder einen hinweis, womit ich das problem lösen könnte.
hier mal code-teile der wichtigsten klassen:
der code des actionlisteners des JButtons der figur:
und hier noch die methode im Component, die die neuen inhalte einfügt und die neuen inhalte auch anzeigen soll.
falls noch code teile fehlen, die jemand zur lösung bräuchte, bitte melden
und schonmal danke an alle, die sich durchringen können, mir so kurzfristig noch zu helfen
nun zu meinem problem. ich habe einen Container, der eine beschreibung und andere dinge anzeigen soll, wenn auf einen JButton mit einer figur geklickt wird. das problem ist nun, dass nicht der neue Container angezeigt werden kann, wenn ich nicht die hauptklasse ausblende und neu einblende oder mit pack() neu anzeigen lasse. allerdings, ist das ein und ausblenden, bzw. das pack(), deutlich zu sehen. ich würde mich freuen, wenn mir jemand eine lösung für mein problem geben könnte oder einen hinweis, womit ich das problem lösen könnte.
hier mal code-teile der wichtigsten klassen:
Code:
public class GUI extends JFrame{
Game g = null;
String[] player = new String[2];
Beschreibung desOben, desUnten;
public GUI(String spieler1, String spieler2) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e1) {
e1.printStackTrace();
}
if(spieler1.trim().equals("") && spieler2.trim().equals(""))
new AskForNames(this);
else{
this.player[0]=spieler1;
this.player[1]=spieler2;
}
try {
this.g = new Game();
} catch (PieceNotPlacebaleException e) {
this.handlePNPException();
}
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100, 100, 600, 600);
this.setTitle("Aderlass - Das Spiel");
this.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
this.desOben = new Beschreibung(this.player,0);
this.desUnten = new Beschreibung(this.player,1);
this.setExtendedState(Frame.MAXIMIZED_BOTH);
this.setResizable(false);
this.setVisible(false);
c.fill = GridBagConstraints.BOTH;
c.gridheight = 1;
c.gridwidth = 2;
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 0;
c.ipady = 100;
// "Banner"
Icon i = new ImageIcon("oberflaeche/Banner.png");
JButton m = new JButton(i);
this.add(m, c);
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 2;
c.weightx = 0.7;
c.weighty = 1;
c.ipady = 0;
// Spielfeld
Spielfeld s = new Spielfeld(g, this.desOben, this.desUnten);
this.add(s, c);
c.weightx = 1;
c.weighty = 1;
c.gridx = 1;
c.gridy = 1;
c.gridheight = 1;
// Beschreibung Oben
this.add(this.desOben, c);
c.gridy = 2;
// Beschreibung Unten
this.add(this.desUnten, c);
Thread t = new Thread(new CheckWin(this.g, this.player, this));
t.start();
this.setVisible(true);
}
}
Code:
public void actionPerformed(ActionEvent arg0) {
FigurenButton ev = (FigurenButton)arg0.getSource();
if(Spielfeld.this.from==null){
Spielfeld.this.from = ev;
ev.switchBackground();
int player = Spielfeld.this.g.getCurrentPlayer();
Beschreibung desc=null;
switch(player){
case 0: desc=Spielfeld.this.desOben;
break;
case 1: desc=Spielfeld.this.desUnten;
break;
}
desc.setDesc(ev.getFigur());
}
else{
if(Spielfeld.this.g.moveFigur(Spielfeld.this.from.getPosition(), ev.getPosition())){
Spielfeld.this.from = null;
Spielfeld.this.spielfeldAnzeigen();
}
else{
((FigurenButton)Spielfeld.this.getComponentAt(Spielfeld.this.from.getX(), Spielfeld.this.from.getY())).switchBackground();
Spielfeld.this.from = null;
}
}
}
Code:
public void setDesc(Figur f){
if(this.pic!=null)
this.remove(this.pic);
if(this.text!=null)
this.remove(this.text);
File fi=null;
if(f!=null)
fi = new File(f.getPicPath());
if(fi!=null && fi.exists())
this.pic=new JButton(new ImageIcon(f.getPicPath()));
else if(f!=null)
this.pic=new JButton(f.getName());
else
this.pic=new JButton("");
if(f!=null)
this.text=new JEditorPane("text/plain",f.getDescription());
else
this.text=new JEditorPane("text/plain","");
this.add(this.pic);
this.add(this.text);
GUI.this.pack();
GUI.this.setExtendedState(Frame.MAXIMIZED_BOTH);
}
falls noch code teile fehlen, die jemand zur lösung bräuchte, bitte melden
und schonmal danke an alle, die sich durchringen können, mir so kurzfristig noch zu helfen