JInternalFrame: Warum funktioniert das hier nicht?

Status
Nicht offen für weitere Antworten.

jagdfalke

Bekanntes Mitglied
Hi, der Titel sagt eigentlich schon alles. Ich habe 3 Klassen:


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
 

spoensche

Mitglied
du must in der klasse childframe im konstruktor super aufrufen, damit die klasse die elternklasse JinternalFrame instantieren kann. dann sollte es funktionieren.
 
R

Roar

Gast
spoensche hat gesagt.:
du must in der klasse childframe im konstruktor super aufrufen, damit die klasse die elternklasse JinternalFrame instantieren kann. dann sollte es funktionieren.
ne, das wird automatisch gemacht.
@jagdfalke: natürlich geht das nicht. du erzeugst bei jedem klick eine neue JDesktopPane, die NICHTS mit der pane zu tun hat die auf deinem fenster angezeigt wird, auch wenn die beiden den gleichen variablennamen haben.
deine neue pane sowie dein iframe werden, sobald die methode zurückgekehrt ist recht schnell vom gc gefressen.
 
B

Beni

Gast
Übergib dem "MyActionListener" das Objekt hinter "desk" aus MyDesktop und füge deine Frames dann diesem Objekt hinzu. Wenn du jedes mal wenn du ein Blatt Papier nimmst, einen neuen Schreibtisch (mit "MyDesktop myDesktop = new MyDesktop();") dafür kaufst, kommst du nicht weit ;-)
 

jagdfalke

Bekanntes Mitglied
also so oder?:

Code:
  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);

    MyActionListener actionlistn = new MyActionListener(desk);    

    JMenuBar menubar = new JMenuBar();
    menubar.add(createFileMenu(actionlistn);
    setJMenuBar(menubar);
  }

und ind createFileMenu:
Code:
mi.addActionListener(actionlistener);

und etz? sich, dass du desk aus MyDesktop() meinst? und nicht desktop aus public static void main(String[] args) ???
mfg
jagdfalke
 
B

Beni

Gast
Ok, MyDesktop wäre sinnvoller.

Also dann:
Code:
public class MyActionListener implements ActionListener {
  private MyDesktop desktop;

  public MyActionListener( MyDesktop desktop ){
    this.desktop = desktop;
  }
 
  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();
     
      desktop.addChildScoreCard(new ChildFrame("test"), 10, 10, 300, 200);

    }
  }
 
}

Code:
public MyDesktop(){
  ... new MyActionListener( this );
}
 

jagdfalke

Bekanntes Mitglied
ahh super !!! danke !!
Ich hatte bis gerade eben alles genauso wie du gschrieben hast, nur in MyActionListener hatte ich das hier stehen:
Code:
public class MyActionListener implements ActionListener {
  
  public JFrame desktop;
  
  MyActionListener(JFrame desktop) {
    this.desktop = desktop;
  }
  
  public void actionPerformed(ActionEvent evt) {
    String cmd = evt.getActionCommand();
    if(cmd.equals("JMenu-Close")) {
      System.exit(0);
    }
    if(cmd.equals("JMenu-NeueScorekarte")) {
      //addChildScoreCard(new ChildFrame("1"), 10, 10, 300, 200);
      desktop.addChildScoreCard(new ChildFrame("test"), 10, 10, 300, 200);
      System.out.println("NEUE SCORECARD");
    }
    if(cmd.equals("JMenu-about")) {
      About abt = new About();
    }
  }
  
}

Und hab mich dann gewundert, dass ich in desktop nicht die methoden und variablen finde :D (man siehts nicht gleich: ich hatte desktop als JFrame deklariert, aus irgendeinem mir unbekannten Grund)

Ach nochwas: findet noch jemand, dass JInternalFrame scheußlich aussehen? So was die Titelleiste und Border angeht. Lässt sich da was drehen?

mfg
jagdfalke
 
B

Beni

Gast
Du kannst es mit einem anderen LookAndFeel versuchen (und ja, ich finde JInternalFrames allgemein hässlich... dumme Fensterchenpolitik, die verwirrt nur :wink: )

LookAndFeel.. siehe google, gibts mehr als genug :D
 

jagdfalke

Bekanntes Mitglied
Danke, also das funktioniert jetzt. Allerding bin ich schon wieder auf die nächste Frage gestoßen:
Auf dem JInternalFrame gibts ein JTextField und ein JButton. Wenn ich auf den Button drücke soll eine Funktion aufgerufen, die aus dem JInternalFrame den Inhalt des JTextFields holt und auswertet. Aber wie kann ich sicher gehen, dass wirklich das JTextField aus dem JInternalFrame genommen wird, das die Funktion aufgerufen hat?
mfg
jagdfalke
 

jagdfalke

Bekanntes Mitglied
du meinst, den Text beim Aufruf der Funktion vom ActionListener aus übergeben?
Ja warum nicht. Aber da ist doch immernoch das problem, dass ich nicht weiß wie ich auf das aufrufende InternalFrame zugreifen kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JInternalFrame in Applets? Java Basics - Anfänger-Themen 9
S JInternalFrame in JInternalFrame - Verhalten Java Basics - Anfänger-Themen 2
StrikeTom JColorchooser auf JInternalframe Java Basics - Anfänger-Themen 4
C JInternalFrame in ein JPanel stecken? Java Basics - Anfänger-Themen 34
H JInternalFrame Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
G Rückgabewert bei JInternalFrame ? Java Basics - Anfänger-Themen 2
G JInternalFrame FensterInFenster-resizable ?Springt zurück! Java Basics - Anfänger-Themen 4
J JInternalFrame überlappen Java Basics - Anfänger-Themen 33
R JInternalFrame fixieren Java Basics - Anfänger-Themen 4
G Von einem JinternalFrame auf ein anderes zugreifen! Java Basics - Anfänger-Themen 18
M Probleme bei JInternalFrame Java Basics - Anfänger-Themen 2
G mehrfaches Öffnen eines JInternalFrame verhindern Java Basics - Anfänger-Themen 11
S JInternalFrame aus anderer Klasse richtig implementieren? Java Basics - Anfänger-Themen 4
S Auf JInternalFrame warten? Java Basics - Anfänger-Themen 2
V Prüfen ob JInternalFrame bereits geöffnet Java Basics - Anfänger-Themen 4
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
P Upload Button funktioniert nicht Java Basics - Anfänger-Themen 13
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben