Hallo Leute, ich habe ein kleines Problem.
Und zwar folgendes: Wir beschäftigen uns in der Schule mit einem Projekt ("interner Wettbewerb") das einen Ski-Lauf verwalten soll.
Ich habe es zwar hinbekommen, dass ich zwischen 2 JPanels hin und her wechseln kann, und dann auch mein Bild gezeichnet wird, jedoch wird dieses Startbild nicht beim aller ersten Aufruf des Programms gezeichnet (wie ich es gerne hätte)
Wäre schön, wenn ihr mir helfen könntet
Hier der Starter (da wir mit BlueJ arbeiten):
Und hier die GUI:
Im Anhang noch das zu ladende Startbild -- wie gesagt, es klappt schon, jedoch erst, wenn ich 1-mal hin und her geschaltet habe
Und zwar folgendes: Wir beschäftigen uns in der Schule mit einem Projekt ("interner Wettbewerb") das einen Ski-Lauf verwalten soll.
Ich habe es zwar hinbekommen, dass ich zwischen 2 JPanels hin und her wechseln kann, und dann auch mein Bild gezeichnet wird, jedoch wird dieses Startbild nicht beim aller ersten Aufruf des Programms gezeichnet (wie ich es gerne hätte)
Wäre schön, wenn ihr mir helfen könntet
Hier der Starter (da wir mit BlueJ arbeiten):
Java:
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.Dimension;
public class Starter
{
private Spiel meinSpiel;
public static void main(String[] args)
{
new Starter();
}
public Starter()
{
meinSpiel = new Spiel();
meinSpiel.setSize(1000, 800);
centerWindow(meinSpiel);
meinSpiel.setVisible(true);
meinSpiel.setAnfangsPanel();
}
public void centerWindow(Window window)
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = window.getSize();
if (frameSize.height > screenSize.height)
{
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width)
{
frameSize.width = screenSize.width;
}
window.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2
);
}
}
Und hier die GUI:
Java:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.BorderLayout;
public class Spiel extends JFrame
{
private AnfangsPanel anfangsPanel = new AnfangsPanel(Toolkit.getDefaultToolkit().getImage("Bilder\\schnee.jpg"));
private JPanel spielerPanel = new JPanel();
private BorderLayout myBorderLayout = new BorderLayout();
private JMenuBar meineMenuBar = new JMenuBar();
private JMenu SpielMenu = new JMenu("Spiel");
private JMenu SpielerMenu = new JMenu("Spieler");
private JMenu RanglisteMenu = new JMenu("Rangliste");
private JMenuItem startMenuItem = new JMenuItem("Lauf starten"); //Spiel-Menu
private JMenuItem neustartMenuItem = new JMenuItem("Neustart"); //Spiel-Menu
private JMenuItem beendenMenuItem = new JMenuItem("Beenden"); //Spiel-Menu
private JMenuItem anmeldenMenuItem = new JMenuItem("anmelden"); //Spieler-Menu
private JMenuItem abmeldenMenuItem = new JMenuItem("abmelden"); //Spieler-Menu
private JMenuItem nextRunMenuItem = new JMenuItem("nächster Lauf"); //Rangliste-Menu
private JMenuItem gesamtMenuItem = new JMenuItem("Platzierung"); //Rangliste-Menu
private JLabel jLabelName = new JLabel();
private JTextField nameTF = new JTextField();
private JButton anmelden = new JButton();
public Spiel()
{
Controller myController = new Controller(this);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(myBorderLayout);
anfangsPanel.setLayout(null);
spielerPanel.setLayout(null);
setJMenuBar(meineMenuBar);
meineMenuBar.add(SpielMenu);
meineMenuBar.add(SpielerMenu);
meineMenuBar.add(RanglisteMenu);
SpielMenu.add(startMenuItem);
SpielMenu.add(neustartMenuItem);
SpielMenu.add(beendenMenuItem);
SpielerMenu.add(anmeldenMenuItem);
SpielerMenu.add(abmeldenMenuItem);
RanglisteMenu.add(nextRunMenuItem);
RanglisteMenu.add(gesamtMenuItem);
startMenuItem.setActionCommand("start"); //Action Command
startMenuItem.addActionListener(myController);
neustartMenuItem.setActionCommand("neustart"); //Action Command
neustartMenuItem.addActionListener(myController);
beendenMenuItem.setActionCommand("beenden"); //Action Command
beendenMenuItem.addActionListener(myController);
anmeldenMenuItem.setActionCommand("switch anmelden"); //Action-Command
anmeldenMenuItem.addActionListener(myController);
abmeldenMenuItem.setActionCommand("abmelden"); //Action-Command
abmeldenMenuItem.addActionListener(myController);
nextRunMenuItem.setActionCommand("Liste next"); //Action-Command
nextRunMenuItem.addActionListener(myController);
gesamtMenuItem.setActionCommand("Liste gesamt"); //Action-Command
gesamtMenuItem.addActionListener(myController);
jLabelName.setText("Name");
jLabelName.setBounds(new Rectangle(10, 80, 50, 20));
nameTF.setBounds(new Rectangle(55, 75, 150, 30));
anmelden.setBounds(new Rectangle(270, 75, 150, 30));
anmelden.setText("Spieler anmelden");
anmelden.setActionCommand("spieler anmelden"); //Action-Command
anmelden.addActionListener(myController);
spielerPanel.setBackground(Color.gray);
spielerPanel.add(jLabelName, null);
spielerPanel.add(nameTF, null);
spielerPanel.add(anmelden, null);
}
public JTextField getNameTF()
{
return nameTF;
}
public void setAnfangsPanel()
{
this.getContentPane().add(anfangsPanel, BorderLayout.CENTER);
spielerPanel.setVisible(false);
anfangsPanel.setVisible(true);
}
public void setSpielerPanel()
{
this.getContentPane().add(spielerPanel, BorderLayout.CENTER);
anfangsPanel.setVisible(false);
spielerPanel.setVisible(true);
}
class AnfangsPanel extends JPanel
{
private Image image;
AnfangsPanel(Image image)
{
this.image = image;
repaint();
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, -100, -100, null);
}
}
}
Im Anhang noch das zu ladende Startbild -- wie gesagt, es klappt schon, jedoch erst, wenn ich 1-mal hin und her geschaltet habe