Avatar billede ehdaniel Nybegynder
17. december 2003 - 12:55 Der er 4 kommentarer og
1 løsning

Hjælp til afbildning af objekter i GUI

Jeg har trukket et objekt ud af en vector ved hjælp af en søgeknap i et GUIbillede. Når objektet er fundet, går jeg direkte over i et andet GUI, hvor objektet skal afbildes i forskellige JTextFields. Mit objekt indeholder fx. navn, hvilket skal stå som default når man kommer ind på næste billede. Nogen bud?
Avatar billede soreno Praktikant
17. december 2003 - 13:11 #1
Send en reference til objektet med over i den anden GUI (f.eks. via konstruktør).

lav en metode der bruger objektets indhold til at sætte textfields og kald denne fra konstruktøren.

F.eks.
private void setDefaultTextValues()
{
  textField1.setText(myObj.getRelevantText());
  //osv.
}
Avatar billede ehdaniel Nybegynder
17. december 2003 - 13:30 #2
Nu er jeg ikke helt så kvik i det, så jeg spørger lige videre :-):
Hvor kommer getRelevantText fra? Er det en metode, jeg selv skal skrive først? Med forlov, her kommer koden til de to GUIer der kommer først, samt objekt-klassen Journal:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
/**
* @author ehdaniel
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class JournalGUI extends Forside implements ActionListener{
    private JLabel label = new JLabel("Søg efter journal:");
    public JTextField soegeFelt = new JTextField(20);
    private JButton soeg, nyKlient;
    Container container = getContentPane();
    private Controller cont;
   
    public JournalGUI(){
    cont = new Controller();
    JPanel journalPanel = new JPanel();
//    journalPanel.setLayout(new FlowLayout());
   
    soeg = new JButton("Søg!");
    nyKlient = new JButton("Opret ny klient:");
    journalPanel.add(label, BorderLayout.SOUTH);
    journalPanel.add(soegeFelt, BorderLayout.SOUTH);
    journalPanel.add(soeg, BorderLayout.SOUTH);
    journalPanel.add(nyKlient, BorderLayout.SOUTH);
    container.add(journalPanel, BorderLayout.SOUTH);
    tabJournal.add(journalPanel);
    soeg.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){
    if (e.getSource() == soeg){
        Vector v = cont.soegEfter(soegeFelt.getText());
    System.out.println("Der blev trykket på søg!");   
    System.out.println(v);
    if(v.isEmpty()){
    System.out.println("der findes ingen med navnet:" + soegeFelt.getText());    
    }
    if (v.size()>1){
    System.out.println("Der findes flere med navnet.. vi kan pt. ikke håndtere dette..");   
       
    }
    if (v.size() ==1){
    System.out.println("Der blev fundet 1 resultat, og det er her: ");   
    JournalObjekt jo = (JournalObjekt) v.get(0);
    System.out.println(jo);
       
    KlientJournalGUI kjg = new KlientJournalGUI();   
    //String navn = jo.getNavn();
//    String n= jo.getNavn();
//    navn.setText(n);
    }       
    }   
    }
    public static void main(String[] args) {
        JournalGUI jg = new JournalGUI();
        jg.setVisible(true);
        //Forside f = new Forside();
        //f.setVisible(true);
    }
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


/**
* @author ehdaniel
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class KlientJournalGUI extends Forside implements ActionListener{
    private JButton gem, kontrakt, diagnoseskema;
    private JTextField navn = new JTextField();
    private JTextField adresse = new JTextField();
    private JTextField tlfnr = new JTextField();
    private JTextField cprnr = new JTextField();
    private JTextField dato = new JTextField();
    private JournalObjekt jo;
    private JTextField konsultationsnr = new JTextField();
    private JTextArea journal = new JTextArea(" Journal:",15,60);
    private JLabel tomKnap1, tomKnap2,tomKnap3, tomKnap4, tomKnap5,

    tomKnap6, tomKnap7, tomKnap8, tomKnap9, tomKnap10, tomKnap11, tomKnap12,
    tomKnap13, tomKnap14, tomKnap15, tomKnap16;
    private String n = new String();
   
    public KlientJournalGUI(){
   
    JPanel north = new JPanel();
    JPanel center = new JPanel();
    JPanel south = new JPanel();
   
    north.setLayout(new GridLayout(6,2));
    center.setLayout(new GridLayout(1,1));
    south.setLayout(new GridLayout(1,1));
   
    JLabel label = new JLabel("Navn:", JLabel.LEFT);
    north.add(label);
    north.add(navn);
    String n= jo.getNavn();
    navn.setText("n");
    tomKnap1 = new JLabel ("");// vær lige obs om det skal være med JLabel først
    north.add(tomKnap1);
    tomKnap2 = new JLabel ("");
    north.add(tomKnap2);
    kontrakt = new JButton("Kontrakt");
    kontrakt.addActionListener(this);
    north.add(kontrakt);
    label = new JLabel("Adresse:", JLabel.LEFT);
    north.add(label);
    north.add(adresse);
    tomKnap3 = new JLabel ("");
    north.add(tomKnap3);
    tomKnap4 = new JLabel ("");
    north.add(tomKnap4);   
    tomKnap5 = new JLabel ("");
    north.add(tomKnap5);
    label = new JLabel("Tlf.nr:", JLabel.LEFT);
    north.add(label);
    north.add(tlfnr);
    tomKnap6 = new JLabel ("");
    north.add(tomKnap6);
    tomKnap7 = new JLabel ("");
    north.add(tomKnap7);
    diagnoseskema = new JButton("Diagnoseskema");
    diagnoseskema.addActionListener(this);
    north.add(diagnoseskema);
    label = new JLabel("Cpr.nr:", JLabel.LEFT);
    north.add(label);
    north.add(cprnr);
    tomKnap8 = new JLabel ("");
    north.add(tomKnap8);
    tomKnap9 = new JLabel ("");
    north.add(tomKnap9);
    tomKnap10 = new JLabel ("");
    north.add(tomKnap10);
    tomKnap11 = new JLabel ("");
    north.add(tomKnap11);
    tomKnap12 = new JLabel ("");
    north.add(tomKnap12);
    tomKnap13 = new JLabel ("");
    north.add(tomKnap13);   
    tomKnap14 = new JLabel ("");
    north.add(tomKnap14);
    tomKnap15 = new JLabel ("");
    north.add(tomKnap15);   
    label = new JLabel("Dato:", JLabel.LEFT);
    north.add(label);   
    north.add(dato);   
    tomKnap16 = new JLabel ("");
    north.add(tomKnap16);   
    label = new JLabel("Konsultationsnr:", JLabel.RIGHT);
    north.add(label);
    north.add(konsultationsnr);
   
   
    center.add(journal);
    gem = new JButton("Gem");
    // HUSK AT RETURNERE TIL JournalGUI!!!
    gem.addActionListener(this);
    south.add(gem);
   
    tabJournal.add(north,BorderLayout.NORTH);
    tabJournal.add(center, BorderLayout.CENTER);
    tabJournal.add(south, BorderLayout.SOUTH);
    this.setVisible(true);
    }
    public void actionPerformed(ActionEvent event){
        if (event.getSource() == gem){
        System.out.println("Gemmer");
        }else if (event.getSource()==kontrakt){
            System.out.println("Kontrakt");
        }else if (event.getSource()==diagnoseskema){
        System.out.println("Diagnoseskema");
        }
}

private void setText()
{
  navn.setText(jo.);
  //osv.
}
//public static void main(String[] args){
//KlientJournalGUI k = new KlientJournalGUI();
//k.setVisible(true);
//}
}
import java.io.Serializable;
import java.util.ArrayList;

/**
* @author ehdaniel
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class JournalObjekt implements Serializable{
    public String navn, adresse;
    public int tlfnr, cprnr;
    private ArrayList konsultationsListe = new ArrayList();
    //int[] konsultation;
    //konsultationsListe.
public JournalObjekt(){
   

}
public JournalObjekt(String n, String adr, int tlf,int cpr, Konsultationer konsultationer){
    navn = n;
    adresse = adr;
    tlfnr = tlf;
    cprnr = cpr;
    konsultationsListe.add(konsultationer);
}   

   
    /**
    * Returns the adresse.
    * @return String
    */
    public String getAdresse() {
        return adresse;
    }

    /**
    * Returns the cprnr.
    * @return int
    */
    public int getCprnr() {
        return cprnr;
    }

    /**
    * Returns the navn.
    * @return String
    */
    public String getNavn() {
        return navn;
    }

    /**
    * Returns the tlfnr.
    * @return int
    */
    public int getTlfnr() {
        return tlfnr;
    }

    /**
    * Sets the adresse.
    * @param adresse The adresse to set
    */
    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    /**
    * Sets the cprnr.
    * @param cprnr The cprnr to set
    */
    public void setCprnr(int cprnr) {
        this.cprnr = cprnr;
    }

    /**
    * Sets the navn.
    * @param navn The navn to set
    */
    public void setNavn(String navn) {
        this.navn = navn;
    }

    /**
    * Sets the tlfnr.
    * @param tlfnr The tlfnr to set
    */
    public void setTlfnr(int tlfnr) {
        this.tlfnr = tlfnr;
    }

}
Jeg håber det er til at overskue. Der skabes et objekt, som ad omveje kommer over i GUI nr 1, som er JournalGUI. Her trækker man objektet ud af en vector og får spyttet objektet ud. Her efter skal der vises i JTextFields.
Pyha, en ordentlig omgang!
Avatar billede soreno Praktikant
17. december 2003 - 13:48 #3
Håber du kan se pointen i dette (pseudokode lign.) eksempel:

i metode som skal kalde GUI2:
JournalObjekt temp = (JournalObjekt) vector.elementAt(x);
GUI2 gui2 = new GUI2(temp);
gui2.show();


public class GUI2 extends JFrame (eller JDialog)
{
  public GUI2(JournalObjekt journalObj)
  {
    //initialisering af diverse JTextFields.

    setDefaultTextValues();
  }

  private void setDefaultTextValues()
  {
    textNavn.setText(myObj.getNavn());
    //osv.
  }
}
Avatar billede ehdaniel Nybegynder
17. december 2003 - 14:14 #4
Jes, det virker :-) Tak for hjælpen! Ville gerne give dig points, men så skal du lige lave et svar :-)
Avatar billede soreno Praktikant
17. december 2003 - 14:17 #5
Jeg lægger et svar.
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