wymiana inf. miedzy dwoma JFrame'ami

Odpowiedz Nowy wątek
2006-09-21 20:08
poczatkujacy_
0

czesc, mam program, ktory sklada sie powiedzy z glownego GUI i jest tam przycisk 'wprowadz' po jego kliknieciu wyskakuje okienko (nowa ramka) w ktorym wprowadzam sobie rozne dane - kilka JTextField. No i teraz chce zeby te dane z pol tekstowych powedrowaly do glownej ramki;

i jeszcze jest tak ze po kliknieciu 'wprowadz', okno glownego GUI staje sie nieaktywne - dispose(false), a po zamknieciu ramki staje sie spowrotem aktywne.

wszystko byloby wporzadaku gdybym umiescil tworzenie tych ramek w obrebie jedenj klasy pod zdarzeniami przyciskow, ale mam kilka takich przyciskow i niezalenych "malych" ramek, co powoduje ze kod staje sie strasznie nieczytelny i trudny w modyfikowaniu. dlatego tez postanowilem to porozbijac na kilka klas w kazdej klasie tworze "mala" ramke, ale pozniej mam problem glownie z tym dispose dla glownego GUI.

prosze wytlumaczcie mi to, tylko lopatologicznie bo dopiero zaczynam przygode z java

pozdrawiam!

Pozostało 580 znaków

2006-09-21 22:14
0

Tu masz przyklad.

http://4programmers.net/Forum/viewtopic.php?id=95044

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-21 22:28
poczatkujacy__
0

znalazlem ten przyklad ale nadal mi nie wychodzi, wyskakuja mi bledy przy probie przeslania danych miedzy ramakami

podaje kod ktory dziala i jak byscie mogli uzupelnic go o wysylanie informacji z ramki pomocniczej do ramki glownej

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

public class Test{
    public static void main(String[] args){
        new RamkaProgramuGlownego();
    }
}

class RamkaProgramuGlownego extends JFrame{
    private JTextField poleTxtGL;
    private JTextArea duzePoleTxtGL;
    private JButton przyciskGL;
    RamkaPomocnicza ramkaPomocnicza;

    public RamkaProgramuGlownego(){
        super("RamkaProgramuGlownego");
        setSize(300,300);
        setResizable(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        poleTxtGL = new JTextField(10);
        duzePoleTxtGL = new JTextArea(3,10);
        przyciskGL = new JButton("Klik");

        JPanel panel = new JPanel();
        panel.add(poleTxtGL);
        panel.add(duzePoleTxtGL);
        panel.add(przyciskGL);

        setContentPane(panel);
        setVisible(true);

        przyciskGL.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                ramkaPomocnicza = new RamkaPomocnicza(poleTxtGL,duzePoleTxtGL);
            }
        }); 

    }
}

class RamkaPomocnicza extends JFrame{
    private JTextField poleTxtPom;// = new JTextField(10);
    private JTextArea duzePoleTxtPom;// = new JTextArea(3,10);
    private JButton przyciskPom;

    public RamkaPomocnicza(JTextField poleTxtPom,JTextArea duzePoleTxtPom){
        super("RamkaPomocnicza");
        setSize(300,300);
        setResizable(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.poleTxtPom = poleTxtPom;
        this.duzePoleTxtPom = duzePoleTxtPom; 

        poleTxtPom = new JTextField(10);
        duzePoleTxtPom = new JTextArea(3,10);
        przyciskPom = new JButton("Przeslij");

        JPanel panel = new JPanel();
        panel.add(poleTxtPom);
        panel.add(duzePoleTxtPom);
        panel.add(przyciskPom);

        setContentPane(panel);
        setVisible(true);

        przyciskPom.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                //przesylanie informacji ???
            }
        }); 
    }
}

Pozostało 580 znaków

2006-09-22 00:05
0
class RamkaPomocnicza extends JFrame{
        private JTextField poleTxtPom;// = new JTextField(10);
        private JTextArea duzePoleTxtPom;// = new JTextArea(3,10);

        private JTextField pole1z1Frame;
        private JTextArea pole2z1Frame;

        private JButton przyciskPom;

        public RamkaPomocnicza(JTextField p1,JTextArea p2){
                super("RamkaPomocnicza");
                setSize(300,300);
                setResizable(true);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                this.pole1z1Frame = p1;
                this.pole2z1Frame = p2;

                this.poleTxtPom = new JTextField(10);
                this.duzePoleTxtPom = new JTextArea(3,10);
                przyciskPom = new JButton("Przeslij");

                JPanel panel = new JPanel();
                panel.add(poleTxtPom);
                panel.add(duzePoleTxtPom);
                panel.add(przyciskPom);

                setContentPane(panel);
                setVisible(true);

                przyciskPom.addActionListener( new ActionListener(){
                        public void actionPerformed(ActionEvent evt){

                przekazDane();  

                        }
                });       
        }

    private void przekazDane() {
        pole1z1Frame.setText(poleTxtPom.getText());
        pole2z1Frame.setText(duzePoleTxtPom.getText());
    }
}

Pozostało 580 znaków

2006-09-22 00:16
0

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

public class Test{
        public static void main(String[] args){
                JFrame frame = new JFrame();
                frame.add(new RamkaProgramuGlownego());
                frame.setSize(300,300);
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
}

class RamkaProgramuGlownego extends JPanel{
        public JTextField poleTxtGL;
        private JTextArea duzePoleTxtGL;
        private JButton przyciskGL;
        public int x;
        public RamkaPomocnicza ramkaPomocnicza;

        public RamkaProgramuGlownego(){

                poleTxtGL = new JTextField(10);
                duzePoleTxtGL = new JTextArea(3,10);
                przyciskGL = new JButton("Klik");

                add(poleTxtGL);
                add(duzePoleTxtGL);
                add(przyciskGL);
                ramkaPomocnicza = new RamkaPomocnicza(this);

                przyciskGL.addActionListener( new ActionListener(){
                        public void actionPerformed(ActionEvent evt){
                            ramkaPomocnicza.show();
                        }
                });       

        }
}

class RamkaPomocnicza extends JFrame{
        private JTextField poleTxtPom;// = new JTextField(10);
        private JTextArea duzePoleTxtPom;// = new JTextArea(3,10);
        private JButton przyciskPom;
        public RamkaProgramuGlownego pm;

        public RamkaPomocnicza(RamkaProgramuGlownego panelPomocniczy){
                setSize(300,300);
                setResizable(true);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                pm = panelPomocniczy;

                poleTxtPom = new JTextField(10);
                duzePoleTxtPom = new JTextArea(3,10);
                przyciskPom = new JButton("Przeslij");

                JPanel panel = new JPanel();
                panel.add(poleTxtPom);
                panel.add(duzePoleTxtPom);
                panel.add(przyciskPom);

                setContentPane(panel);

                przyciskPom.addActionListener( new ActionListener(){
                        public void actionPerformed(ActionEvent evt){
                            String wiadomosc = duzePoleTxtPom.getText();
                            pm.poleTxtGL.setText(wiadomosc);
                        }
                });       

        }          

}

any nawiazac komunikacje miedzy dwoma klasami musisz miec wspolne podloze - nalezy przekazac obiekt, w tym wypadku przekazujemy obiekt klasy RamkaProgramuGlownego (moglbys tez przekazac same pola tekstowe co chyba byloby latwiejsze ^^ jednak wersja z panelem powinna lepiej zobrazowac zagadnienie), robimy to tworzac obiekt klasy ramkaPomocnicza
ramkaPomocnicza = new RamkaPomocnicza(this);
z parametrem this (przekazuje samego siebie)

nalezy zmodyfikowac konstruktor klasy ramkaPomocnicza tak, aby mogla "odebrac obiekt"
public RamkaPomocnicza(RamkaProgramuGlownego panelPomocniczy)

nastepnie, zachowujemy odebrany obiekt do zmiennej pm
pm = panelPomocniczy;

jako, ze obiekt klasy ramkaPomocnicza jest tworzony w konstruktorze klasy RamkaProgramuGlownego wystarczy jedynie ja pokazac

przyciskGL.addActionListener( new ActionListener(){
                        public void actionPerformed(ActionEvent evt){
                            ramkaPomocnicza.show();
                        }
                });       

skoro swiezo stworzony obiekt klasy ramkaPomocnicza ma dostep do wszystkich pol obiektu klasy RamkaProgramuGlownego wystarczy zmienic wartosc jednego z jego pol, w tym wypadku poleTxtGL

przyciskPom.addActionListener( new ActionListener(){
                        public void actionPerformed(ActionEvent evt){
                            String wiadomosc = duzePoleTxtPom.getText();
                            pm.poleTxtGL.setText(wiadomosc);
                        }
                });       

Pozostało 580 znaków

2006-09-22 09:41
poczatkujacy___
0

wilekie dzieki Panowie za kod i wyjasnienie, juz rozumiem jak to dziala

Pozdrawiam!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0