Avatar billede hans1000 Nybegynder
12. december 2003 - 20:00 Der er 8 kommentarer og
1 løsning

Kald mellem flere gui klasser mm.

1) Hvordan kunne en kode se ud hvis jeg ønsker en JButton i en GUI klasse skal kunne aktivere en anden GUI klasse.

2) Hvordan kunne en kode se ud hvis jeg har en Jbuton i en GUI klasse som skal kunne fjerne det synlige resultat som vises på skærmen fra en anden GUI klasse?

eks.
Alt nævnt her er GUI klasser:

Hovednenu har en Jbutton som aktivere en anden gui som kommer frem, når jeg er færdig med at bruge denne anden gui, skal en Jbutton i selv samme gui kunne slette det på skærmen som denne gui klasse har skabt. således at kun hovedmenu er tilbage.
Avatar billede arne_v Ekspert
12. december 2003 - 20:06 #1
Den kode der køres når der klikkes på button 1 skal lave en nyt GUI klasse
og assigne til en instans member.

De kode der der køres når der klikkes på button 2 skal bare bruge referancen
til at gøre den usynlig.

Lidt groft sagt.

Hvis du fortæller hvilken type den anden GUI klasse er kan jeg lave et
eksempel.
Avatar billede arne_v Ekspert
12. december 2003 - 20:25 #2
Det her eksempel er ikke færdigt men det må give en ide:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class OpenAndClose extends JFrame implements ActionListener {
    private JButton opennew;
    private JButton closenew;
    private OpenAndClose newone;
    public OpenAndClose() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(1, 2));
        opennew = new JButton("Open new");
        closenew = new JButton("Close new");
        opennew.addActionListener(this);
        closenew.addActionListener(this);
        getContentPane().add(opennew);
        getContentPane().add(closenew);
        pack();
    }

    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() == opennew) {
            newone = new OpenAndClose();
            newone.show();
        }
        if (ev.getSource() == closenew) {
            newone.hide();
        }
    }

    public static void main(String[] args) {
        OpenAndClose f = new OpenAndClose();
        f.show();
    }
}
Avatar billede hans1000 Nybegynder
12. december 2003 - 20:51 #3
Er ikke helt med på hvad du mener med typen på den anden gui klasse,jeg har et billede af oplæg til gui'en (Gui.jpg) (grafisk) som jeg evt. kunne sende til dig, det er lidt indviklet at forklare forløbet.
Avatar billede arne_v Ekspert
12. december 2003 - 21:22 #4
Hvad er det som skal aktiveres ? En klasse som extender JFrame og skal
åbnes i et separat vindie ligesom i mit eksempel ovenfor ? Eller en custom
component der skal addes til det eksisterdne vindue ?
Avatar billede hans1000 Nybegynder
12. december 2003 - 21:34 #5
1 trin er en klasse der extender JFrame (HovedmenuGUI) 
2 trin er også en klasse der extender JFrame (Medlems Administration), i denne anden klasse skal der addes 2 subdele inde i det eksisterene vindue. dise sub dele aktivers af tryk på JButtons, nederst her skal der være en Jbutton der renser skærmbilledet, så kun HovednenuGUI står tilbage igen
Avatar billede _carsten Nybegynder
12. december 2003 - 21:35 #6
Er det noget a la nedenstående du går efter  ???

public class GuiTest extends javax.swing.JFrame {

    public GuiTest() {
        initComponents();
        setSize(500,500);
    }
   
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.FlowLayout());

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("\u00c5ben nyt vindue");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                openDialog(evt);
            }
        });

        getContentPane().add(jButton1);

        pack();
    }

    private void openDialog(java.awt.event.ActionEvent evt) {
        GuiDialog dialog = new GuiDialog(this, true);
        dialog.show();
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    public static void main(String args[]) {
        new GuiTest().show();
    }
    private javax.swing.JButton jButton1;

   
   
    class GuiDialog extends javax.swing.JDialog {
   
    public GuiDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setSize(300,300);
    }
   
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.FlowLayout());

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                closeDialog(evt);
            }
        });

        jButton1.setText("Luk dette vindue");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                setVisible(false);
                dispose();
            }
        });
        getContentPane().add(jButton1);

        pack();
    }
   
    private void closeDialog(java.awt.event.WindowEvent evt) {
        setVisible(false);
        dispose();
    }

    private javax.swing.JButton jButton1;
   
}
}
Avatar billede arne_v Ekspert
12. december 2003 - 21:57 #7
Måske noget a la det her:

import java.awt.*;
import java.awt.event.*;
import java.util.Date;

import javax.swing.*;

public class FirstClass extends JFrame implements ActionListener {
    private JButton callsec;
    private JLabel data;
    private SecondClass sec;
    public FirstClass() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(1, 2));
        callsec = new JButton("Open Second");
        callsec.addActionListener(this);
        getContentPane().add(callsec);
        data = new JLabel("Not updated yet");
        getContentPane().add(data);
        pack();
    }
    public void update() {
        data.setText("I am updated " + new Date());
    }
    public void actionPerformed(ActionEvent ev) {
        sec = new SecondClass(this);
        sec.show();
    }
    public static void main(String[] args) {
        FirstClass f = new FirstClass();
        f.show();
    }
}

class SecondClass extends JFrame implements ActionListener {
    private JButton setfirst;
    private JButton back;
    private FirstClass first;
    public SecondClass(FirstClass first) {
        this.first = first;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(2, 1));
        setfirst = new JButton("Update");
        setfirst.addActionListener(this);
        getContentPane().add(setfirst);
        back = new JButton("Close");
        back.addActionListener(this);
        getContentPane().add(back);
        pack();
    }
    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() == setfirst) {
            first.update();
        }
        if (ev.getSource() == back) {
            dispose();
        }
    }
}
Avatar billede hans1000 Nybegynder
12. december 2003 - 22:12 #8
Tak begge to. Det er begge to forslag som jeg kan arbejde videre med jeg giver dog mine points til arne_v da han har været så flink at have tålmodighed med mig, det er altid rart når andre ser mulighed for at bruge lidt tid på en der ikke er helt så meget inde i tingende.
Avatar billede _carsten Nybegynder
12. december 2003 - 22:16 #9
OK - lyder ikke urimeligt
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