-simonho-
Cadet 4th Year
- Registriert
- Juli 2012
- Beiträge
- 119
Hallo,
ich arbeite gerade an einem Projekt für den Informatik Unterricht.
Das ganze soll ein Menü werden. Dafür habe ich mit einem JPanel ein Hintergrundbild erzeugt.
Jetzt habe ich allerdings das Problem, dass ich in der Methode initComponents() zwar neue Buttons erzeugen kann, diese aber ansonsten nicht nutzen kann, bzw. die Buttons, welche ich außerhalb erzeugt hab nicht sichtbar/nutzbar sind.
Wie kann ich das Problem lösen?
Vielen Dank,
-simonho-
ich arbeite gerade an einem Projekt für den Informatik Unterricht.
Das ganze soll ein Menü werden. Dafür habe ich mit einem JPanel ein Hintergrundbild erzeugt.
Jetzt habe ich allerdings das Problem, dass ich in der Methode initComponents() zwar neue Buttons erzeugen kann, diese aber ansonsten nicht nutzen kann, bzw. die Buttons, welche ich außerhalb erzeugt hab nicht sichtbar/nutzbar sind.
Code:
public class Menue extends JFrame implements ActionListener{
// Anfang Attribute
private JButton b_close, b_larger, b_smaller;
private GraphicsDevice device;
private JButton jButton1 = new JButton();
// Ende Attribute
public Menue(String title) {
// Frame-Initialisierung
super(title);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
int frameWidth = 300;
int frameHeight = 300;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Container cp = getContentPane();
cp.setLayout(null);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device =ge.getDefaultScreenDevice();
if(device.isFullScreenSupported()){
device.setFullScreenWindow(this);
}
b_close = new JButton("Beenden");
b_close.setBounds(20, 20, 100, 30);
b_close.addActionListener(this);
b_larger = new JButton("FullScreen");
b_larger.setBounds(20, 70, 100, 30);
b_larger.addActionListener(this);
b_larger.setEnabled(false);
b_smaller = new JButton("Window");
b_smaller.setBounds(20, 120, 100, 30);
b_smaller.addActionListener(this);
initComponents();
initGui();
this.play("Rolemusic_-_05_-_She_Is_My_Best_Treasure.wav");
// Anfang Komponenten
jButton1.setText("jButton1");
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1_ActionPerformed(evt);
}
});
cp.add(jButton1);
// Ende Komponenten
setVisible(true);
} // end of public Menue
// Anfang Methoden
private void initComponents() {
/*
* Neue ContentPane setzen, die das Hintergrundbild zeichnet. Hier zu
* Vorzeigezwecken alles in einem Schritt reingeklatscht, sollte im
* Normalfall sauberer implementiert werden.
*/
Container cp = getContentPane();
setContentPane(new JPanel() {
/**
* Das Hintergrundbild.
*/
private Image img;
/*
* Da es sich hierbei um eine anonyme Klasse handelt, kann ich
* keinen expliziten Konstruktor deklarieren, daher wird das Bild in
* einem Initialisierer geladen.
*/
{
img = getToolkit().createImage("boot.jpg");
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 1);
try {
mt.waitForAll();
} catch(InterruptedException e) {
e.printStackTrace();
}
}
/*
* (non-Javadoc)
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
@Override
protected void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
});
getContentPane().add(jButton1 = new JButton("JB1"));
jButton1.setBounds(64, 72, 113, 49);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()== b_close){
device.setFullScreenWindow(null);
System.exit(0);
}
if(e.getSource()== b_larger){
b_larger.setEnabled(false);
b_smaller.setEnabled(true);
device.setFullScreenWindow(this);
}
if(e.getSource()== b_smaller){
b_larger.setEnabled(true);
b_smaller.setEnabled(false);
device.setFullScreenWindow(null);
}
}
private void initGui() {
//setSize(500, 500);
setLocationRelativeTo(null);
setVisible(true);
}
private void play(String lied) {
try {
AudioInputStream input = AudioSystem.getAudioInputStream(new File(lied));
SourceDataLine line = AudioSystem.getSourceDataLine(input.getFormat());
line.open(input.getFormat());
line.start();
byte[] buffer = new byte[1024];
int count;
while((count = input.read(buffer, 0, 1024)) != -1) {
line.write(buffer, 0, count);
}
line.drain();
line.stop();
line.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public void jButton1_ActionPerformed(ActionEvent evt) {
System.exit(0);// TODO hier Quelltext einfügen
} // end of jButton1_ActionPerformed
// Ende Methoden
public static void main(String[] args) {
new Menue("Menue");
} // end of main
} // end of class Menue
Wie kann ich das Problem lösen?
Vielen Dank,
-simonho-