Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe in einer Klasse ein JFrame "TextTest" mit Menu gebastelt. Das JFrame enthält zunächst nur etwas beliebigen Text. Nach dem ich das JMenuItem "NeuerText" betätige, soll nun ein neuer Text angezeigt werden. Das öffnen dieses Textes geschieht über eine weitere Klasse, aber ich schaffe es bis dato nicht mir den Text im diesem einem JFrame "TextText" anzeigen zu lassen, sondern muss bis dato immer weitere Fenster öffnen.
class Fenster(){
JFrame test = new JFrame(TestText");
//Menü....
}
class Fenster2 extends Fenster{
public void fensterMethode(){
//Was auch immer hier steht z.B. ein Button,
// soll oben im Frame "TestText" eingefügt werden..
}
}
class Hauptprogram{
Fenster f = new Fenster("Programmfenster);
}
class Fenster extends Fenster{
// Konstruktor
public Fenster(String text){
setTitel(text);
add(new JButton("Aufschrift"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
Danke fuer den Tipp. Aber so ganz funktioniert das nicht bei mir..
Die Methode muss weiter existieren, da diese aus einer weiteren Klasse den JButton erst initieren soll... Wenn ich jetzt mit einem super oder this arbeite wird wieder ein neues Fenster geöffnet....
Code:
class Fenster(){
JFrame test = new JFrame("TestText");
//Menü....
}
class Fenster2 extends Fenster{
public void fensterMethode(){
super.add(new JButton("Aufschrift"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); en..
}
}
Na gut, vielleicht poste ich mal ein Testprogramm....
Code:
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame {
JFrame frame = new JFrame("Test");
public void testWindow(){
JMenuBar menubar = new JMenuBar();
JMenu test = new JMenu("Test");
JMenuItem test2 = new JMenuItem("TestStart");
test.add(test2);
menubar.add(test);
test2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
test2ActionPerformed();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menubar);
frame.setSize(100,100);
frame.setVisible(true);
}
public void test2ActionPerformed(){
TestFenster abfrage = new TestFenster();
abfrage.start();
}
}
import javax.swing.*;
public class TestFenster extends Test {
public void start(){
add(new JButton("Aufschrift")); // Dieser Button soll im Hauptfenster erscheinen, und kein Fenster fuer sich darstellen.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
setVisible(true);
}
}
public class MainTest {
public static void main(String[] args) {
Test test = new Test();
test.testWindow();
}
}
Ich will nur, innerhalb des JFrame frame arbeiten, und nicht ständig mit neuen Fenstern.
Ähm - ja. Ein Frame, der einen JFrame enthält, von dem aus ein JFrame erstellt wird - ohne Sinn und Konzept zu hinterfragen, hier erstmal irgendwas code-ähnliches
Code:
import java.awt.event.*;
import javax.swing.*;
public class Test5 extends JFrame {
public static void main(String[] args) {
Test5 test = new Test5();
test.testWindow();
}
JFrame frame = new JFrame("Test");
public void testWindow(){
JMenuBar menubar = new JMenuBar();
JMenu test = new JMenu("Test");
JMenuItem test2 = new JMenuItem("TestStart");
test.add(test2);
menubar.add(test);
test2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
test2ActionPerformed();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menubar);
frame.setSize(100,100);
frame.setVisible(true);
}
public void test2ActionPerformed(){
start();
}
public void start()
{
frame.add(new JButton("Aufschrift")); // Dieser Button soll im Hauptfenster erscheinen, und kein Fenster fuer sich darstellen.
frame.validate();
}
}
Danke erstmal für deine Mühen.
Ich muss ja zugeben, dass ich so weit schon war/bin.. Die Problematik ist tatsächlich dieses Konstrukt mit den dargestellten Klassen, die eigentlich nochmal in weitere Pakete unterteilt sind, zu schaffen.
Es macht tatsächlich in dem Test-Szenario wenig Sinn bzw sieht ewas suspekt aus, aber es ist ja nur ein Beispiel der dem kompletten Programm am nächsten kommt.
Also wie funktioniert das ganze mit Beibehaltung der vorgebenen Klassen?
Da wird es doch eine Loesung fuer geben, oder?
Hat nicht noch jemand eine Idee, wie man diese Problematik lösen kann.. Ich muss doch klassenübergreifend auf ein Frame zugreifen können?
Da hin übergeben, wo er gebraucht wird. Ansonsten.... kein Kommentar
Code:
import java.awt.event.*;
import javax.swing.*;
class Test5 extends JFrame {
JFrame frame = new JFrame("Test");
public void testWindow(){
JMenuBar menubar = new JMenuBar();
JMenu test = new JMenu("Test");
JMenuItem test2 = new JMenuItem("TestStart");
test.add(test2);
menubar.add(test);
test2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
test2ActionPerformed(frame);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menubar);
frame.setSize(100,100);
frame.setVisible(true);
}
public void test2ActionPerformed(JFrame f){
TestFenster abfrage = new TestFenster();
abfrage.start(f);
f.validate();
}
}
class TestFenster extends Test5 {
public void start(JFrame f){
f.add(new JButton("Aufschrift")); // Dieser Button soll im Hauptfenster erscheinen, und kein Fenster fuer sich darstellen.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
setVisible(true);
}
}
public class MainTest {
public static void main(String[] args) {
Test5 test = new Test5();
test.testWindow();
}
}