Gå til innhold

Sende melding fra et vindu til et annet


Anbefalte innlegg

Hei.

 

Som topicnavnet sier så lurer jeg på hvordan jeg kan sende en melding fra et vindu til et annet. Jeg har laget to vinduer med én knapp i hvert av dem. I første vindu kan man klikke på knappen så åpnes et nytt vindu. Men når man skal klikke på knappen i vindu nr 2 vil jeg at den skal sette teksten i vindu nr 1 til "It works!" eller et eller annet. Samtidig skal vindu nr 2 forsvinne. Noen som vet hvordan dette gjøres? Her er ihvertfall kodene:

 

Klikk for å se/fjerne innholdet nedenfor
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Frame1 extends JFrame {

private JLabel label = new JLabel("");

public Frame1() {
 setTitle("Frame 1");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setSize(200, 100);
 setLayout(new FlowLayout());
 JButton button = new JButton("Press me!");
 add(button);
 button.addActionListener(new OpenFrame2());
 add(label);
}
private class OpenFrame2 implements ActionListener {
 public void actionPerformed(ActionEvent event) {
 	Frame2 frame2 = new Frame2();
 	frame2.setVisible(true);
 }
}
}

class Frame2 extends JFrame {
public Frame2() {
 setTitle("Frame 2");
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setSize(200, 100);
 setLayout(new FlowLayout());
 JButton button = new JButton("Press me again!");
 add(button);
}
private class Write implements ActionListener {
 public void actionPerformed(ActionEvent event) {
 	// Hva her?
 }
}
}

class Run {
public static void main(String[] args) {
 Frame1 frame = new Frame1();
 frame.setVisible(true);
}
}

 

På forhånd takk! :)

Lenke til kommentar
Videoannonse
Annonse

-Opprett en metode i Frame1 som setter tekst til label

-Sende Frame1 inn som argument når Frame2 opprettes

slik f.eks

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

class Main {
   public static void main(String[] args) {
       Frame1 frame = new Frame1();
       frame.setVisible(true);
   }
}

class Frame1 extends JFrame {
   
   private JLabel label = new JLabel("");
   public Frame2 frm2;
   public Frame1() {
       setTitle("Frame 1");
       frm2 = new Frame2(this);//this = dette vinduet og det sendes inn som argumenti det andre
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setSize(200, 100);
       setLayout(new FlowLayout());
       JButton button = new JButton("Press me!");
       add(button);
       button.addActionListener(new OpenFrame2());
       add(label);
       System.out.println(label);
   }
   public void setLabelTxt(String txt){
       label.setText(txt);
   }
   private class OpenFrame2 implements ActionListener {
       public void actionPerformed(ActionEvent event) {            
           frm2.setVisible(true);
       }
   }
}


class Frame2 extends JFrame {
   private Frame1 parent;
   //sender Det første vinduet inn som argument i det andre
   public Frame2(java.awt.Frame parent ) {
       setTitle("Frame 2");
       this.parent = (Frame1) parent;  
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setSize(200, 100);
       setLayout(new FlowLayout());
       JButton button = new JButton("Press me again!");
       Listener lytt = new Listener();
       button.addActionListener(lytt);
       add(button);
   }
   private class Listener implements ActionListener {
       public void actionPerformed(ActionEvent event) {
           parent.setLabelTxt("FUNKER!");
       }
   }
}

Endret av Qwark
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...