Du kan lave din egen metode som kalder den metode. F.eks. noget i stil med:
- public void changeTextOnButton(String text) {
- myButton.setText(text);
- }
Det var lige den første løsning jeg kunne komme på
Forresten kan du kun benytte super, hvis dit andet frame arver fra dit første frame.
Tror ikke helt det går det du har skrevet der.. Har lidt svært ved at forklare det..
Det hænger sammen som følger:
- public class HovedVindue extends JFrame
- {
- public HovedVindue()
- {
- super("Hovedvindue");
- JButton detaljer = new JButton("Tilføj detalje");
- add(detaljer);
- detaljer.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e)
- {
- new DetaljeVindue().setVisible(true);
- }
- });
- }
- }
- public class DetaljeVindue extends JFrame
- {
- public DetaljeVindue()
- {
- super("Detaljevindue");
- JButton gem = new JButton("Gem");
- add(gem);
- gem.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e)
- {
- // gem indhold fra whatever form
- dispose();
- }
- });
- }
- }
Når jeg trykker på "Tilføj detalje" åbner vinduet altså og jeg kan tilføje whatever.. Når jeg så trykker på "Gem", vil jeg gerne have at teksten på "Tilføj detalje" ændres til "Rediger detalje" i stedet for..
Ved ikke om det var lettere at forstå med et kodeeksempel?
EDIT:
Jeg har fået løst problemet nu..
Jeg endte med at lave mit detalje-vindue om til en JDialog i stedet, som jeg så kunne sætte til at være modal med setModal(true).
På denne måde kan jeg stoppe eksekvering af koden i den først fil, indtil dialogen lukkes igen.
Når dialogen så lukkes af den ene eller den anden årsag, kan jeg tjekke om en public boolean værdi er blevet sat i detaljevinduet - denne viser om der er foretaget noget eller ej.
Indlæg senest redigeret d. 23.04.2011 17:07 af Bruger #8773