Avatar billede swaq Nybegynder
08. januar 2003 - 22:25 Der er 8 kommentarer og
1 løsning

ActionHandling i et klassehieraki

Forvirret? Havde lidt svært ved at finde en passende overskrift, men her er problemet:

Mit programs grundflade er en JFrame som består af en par JPanels og en JDesktop. I Desktoppen findes en række JInternalFrames indeholdende nogle JPanels med knapper og så'en.
Mit problem er actionHandling!
I et vindue på desktoppen findes en knap som, når der trykkes på den, skal åbne en ny JInternalFrame (eller i nogle tilfælde vise en eksisterende) på desktoppen.
Som mit program ser ud nu, har jeg behov for at håndterer et tryk på en sådan knap fra min yderste grænseflade (altså JFramen) for at kunne åbne en ny JInternalFrame på desktoppen. Dette skyldes at alle vinduer på desktoppen åbnes herfra (blandt andet gennem en JMenuBar).
I den forbindelse spekulerede jeg på, hvordan jeg opsætter en ActionListener som:
1. Lytter på en JButton i et JPanel i en JInternalFrame på en JDesktop fra min JFrame (har allerede været i stand til at gøre det på JLabels i en JPanel på JFramen)
2. Sætter denne lytter i stand til at udføre handlinger på JFramen (selvom handlingen jf. punkt 1 foregår laaaaaangt væk fra JFramen).

Forvirringen er total! men jeg håber der er nogen derude der kan redde mig ud af suppedasen :-)

/Lars
Avatar billede swaq Nybegynder
08. januar 2003 - 23:12 #1
Tilføjelse:
Det er nu lykkedes mig at add'de en mouseListener på det JPanel som knappen, jeg egentligt skulle have fat i, er på.
Gad vide hvordan jeg kommer det sidste stykke ind i klassehierakiet og får fat på knappen???
Avatar billede viht Nybegynder
08. januar 2003 - 23:50 #2
Forstår jeg dig ret når jeg foreslår?

Du tilføjer en ActionListener til den knap du vil lytte på:
JButton myButton = new JButton("OK");
myButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent event) {
      minMetodeTilAtLaveNogetPåMitJFrameObject(...);
  }
});

Så skal du blot sørge for at du har adgang til din JFrame derfra.
Avatar billede viht Nybegynder
08. januar 2003 - 23:53 #3
På denne måde er den anonyme ActionListener kun tilknyttet din JButton.
Avatar billede swaq Nybegynder
09. januar 2003 - 14:07 #4
Jf. dit foreslag skal jeg, som du selv siger have adgang til min JFrame fra det panel i min JInternalFrame på dekstoppen som er oprettet på netop JFramen... m.a.o. jeg skal være i stand til derfra (hvor knappen er oprettet) at oprette eller vise objekter på min aller yderste grænseflade (JFramen), hvilket jeg ikke lige kan gennemskue hvordan jeg gør. Jeg har jo ikke oprettet noget objekt af JFramen der hvor knappen oprettes... Objektoprettelsen går nærmest den anden vej...
Avatar billede viht Nybegynder
09. januar 2003 - 14:30 #5
Hvis dit JPanel ligger i en anden klasse kan du jo blot føre dit JFrame objekt med som parameter til contructor'en på dit JPanel.

public class MyPanel extends JPanel {
  private MyFrame mainFrame;

  public MyPanel(MyFrame mainFrame) {
      this.mainFrame = mainFrame;
  }
  ...
}
Avatar billede viht Nybegynder
09. januar 2003 - 14:31 #6
Så har du en reference til dit MyFrame objekt som du frit kan modificere.

Sorry for multi-message, ramte udfør ved en fejl :)
Avatar billede swaq Nybegynder
09. januar 2003 - 18:58 #7
helt i orden... jeg kigger på sagen :-)
Avatar billede swaq Nybegynder
10. april 2003 - 13:31 #8
Spørgmål lukkes...
Avatar billede swaq Nybegynder
10. april 2003 - 13:32 #9
Spørgsmål, even
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester