Hi, der Titel sagt eigentlich schon alles. Ich habe 3 Klassen:
hier fängt alles an:
die Child-Klasse:
der ActionListener:
das Problem ist, dass die beim drücken auf "Neue Scorekarte" keine neues InternalFrame erscheint. Warum denn nicht?
mfg
jagdfalke
hier fängt alles an:
Code:
package golfrechner;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyDesktop extends JFrame{
private JDesktopPane desk;
Dimension dm = Toolkit.getDefaultToolkit().getScreenSize();
MyDesktop() {
this.desk = new JDesktopPane();
desk.setBackground(Color.GRAY);
desk.setDesktopManager(new DefaultDesktopManager());
setContentPane(desk);
setSize(800,600);
setLocation(((dm.width/2) - 400), ((dm.height/2) - 300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Golfrechner 1.0");
setResizable(false);
JMenuBar menubar = new JMenuBar();
menubar.add(createFileMenu());
setJMenuBar(menubar);
}
public void addChildScoreCard(JInternalFrame child, int loc_x, int loc_y, int size_x, int size_y) {
//child.setLocation(loc_x, loc_y);
child.setSize(size_x,size_y);
child.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
desk.add(child);
child.setVisible(true);
}
public JMenu createFileMenu() {
//DATEI
JMenu ret = new JMenu("Datei");
JMenuItem mi;
MyActionListener actionlistener = new MyActionListener();
//NEUE SCOREKARTE
mi = new JMenuItem("Neue Scorekarte", 'n');
mi.addActionListener(actionlistener);
mi.setActionCommand("JMenu-NeueScorekarte");
ret.add(mi);
//NEUER PLATZ
mi = new JMenuItem("Neuer Platz", 'p');
ret.add(mi);
ret.addSeparator();
//SCHLIESSEN
mi = new JMenuItem("Beenden", 'b');
mi.addActionListener(actionlistener);
mi.setActionCommand("JMenu-Close");
ret.add(mi);
return ret;
}
public static void main(String[] args) {
SplashWindow slshwnd = new SplashWindow();
slshwnd.setVisible(true);
try {
Thread.sleep(2500);
} catch (InterruptedException ex) {}
slshwnd.setVisible(false);
slshwnd.dispose();
MyDesktop desktop = new MyDesktop();
desktop.setVisible(true);
}
}
die Child-Klasse:
Code:
package golfrechner;
import javax.swing.*;
import javax.swing.JInternalFrame;
import java.awt.Color;
import java.awt.*;
class ChildFrame extends JInternalFrame {
public ChildFrame(String title) {
setTitle(title);
setMaximizable(true);
setIconifiable(true);
setClosable(true);
setBackground(Color.lightGray);
Container contentpane = this.getContentPane();
contentpane.setLayout(null);
JLabel lbltest = new JLabel("Hello World");
lbltest.setBounds(10,10,100,20);
contentpane.add(lbltest);
}
}
der ActionListener:
Code:
package golfrechner;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
String cmd = evt.getActionCommand();
if(cmd.equals("JMenu-Close")) {
System.exit(0);
}
if(cmd.equals("JMenu-NeueScorekarte")) {
MyDesktop myDesktop = new MyDesktop();
myDesktop.addChildScoreCard(new ChildFrame("test"), 10, 10, 300, 200);
}
}
}
das Problem ist, dass die beim drücken auf "Neue Scorekarte" keine neues InternalFrame erscheint. Warum denn nicht?
mfg
jagdfalke