Avatar billede duedue Nybegynder
11. januar 2007 - 15:11 Der er 10 kommentarer og
1 løsning

arne_v - hjælp angående arraylist og GUI

arne_v - håber på din hjælp her?
Du har i et tidligere indlæg lavet denne kode til en spørger:

Info.java:

package test;

public class Info {
    private String navn;
    private String adresse;
    private String tlf;
    public Info(String navn, String adresse, String tlf) {
        this.navn = navn;
        this.adresse = adresse;
        this.tlf = tlf;
    }
    public String getNavn() {
        return navn;
    }
    public String getAdresse() {
        return adresse;
    }
    public String getTlf() {
        return tlf;
    }
    public String toString() {
        return navn + ", " + adresse + ", " + tlf;
    }
}

InfoList.java:

package test;

import java.util.*;

public class InfoList extends ArrayList {
    public Info findNavn(String navn) {
        Info inf;
        for (int i = 0; i < size(); i++) {
            inf = (Info)get(i);
            if(inf.getNavn().equals(navn)) return inf;
        }
        return null;
    }
    public Info findAdresse(String adresse) {
        Info inf;
        for (int i = 0; i < size(); i++) {
            inf = (Info)get(i);
            if(inf.getAdresse().equals(adresse)) return inf;
        }
        return null;
    }
    public Info findTlf(String tlf) {
        Info inf;
        for (int i = 0; i < size(); i++) {
            inf = (Info)get(i);
            if(inf.getTlf().equals(tlf)) return inf;
        }
        return null;
    }
}

TestInfo.java:

package test;

import java.util.*;

public class TestInfo {

    public static void main(String[] args) {
        InfoList list = new InfoList();
        list.add(new Info("Hansen", "Hvænget", "11111111"));
        list.add(new Info("Jensen", "Jgade", "22222222"));
        Info inf = list.findNavn("Jensen");
        if(inf != null) {
            System.out.println(inf);
        } else {
            System.out.println("Jensen fidne ikke");
        }
    }
}

Mit spørgsmål er hvordan jeg kan bruge det i GUI? Har en "JList1" som jeg gerne vil ha' udskrevet den søgte person i. Så har jeg et JTextField "search" og en "ok" knap. I "search" skal jeg kunne søge på en person (bare navnet) og via tryk på "ok" skal den fundne person vises i "JList1", kan det lade sig gøre uden alt for meget bøvl?
Avatar billede kalp Novice
11. januar 2007 - 16:36 #1
tror måske det skal gøres sådan her... på knap tryk listener

Info inf          = findNavn(dinTekstBoks.getText());
Info[] data      = new Info[1];
data[0]          = inf;
ListModel bigData = new AbstractListModel() {
    public int getSize() { return Short.MAX_VALUE; }
    public Object getElementAt(int index) { return "Index " + index; }
};

JList bigDataList = new JList(bigData);
bigDataList.setListData(data)
Avatar billede duedue Nybegynder
11. januar 2007 - 18:12 #2
Har prøvet med følgende i min frame;

private void soeg_actionPerformed(ActionEvent e) {
               
Info inf          = findNavn(soeg.getText());
Info[] data      = new Info[1];
data[0]          = inf;
ListModel bigData = new AbstractListModel() {
public int getSize() { return Short.MAX_VALUE; }
public Object getElementAt(int index) { return "Index " + index; }};

JList bigDataList = new JList(bigData);
bigDataList.setListData(data);               
}
}

Men den kommer med følgende fejl: Method 'findNavn' not found.
Avatar billede kalp Novice
11. januar 2007 - 18:27 #3
du skal lige lave
InfoList list = new InfoList();
Info inf      = list.findNavn(soeg.getText());
Avatar billede duedue Nybegynder
11. januar 2007 - 19:04 #4
Ok, den kommer ikke med nogen fejl nu, men der sker ingenting når jeg trykker på "soeg" knappen...
Skal jeg paste min kode?
Avatar billede kalp Novice
11. januar 2007 - 21:48 #5
god ide
Avatar billede arne_v Ekspert
12. januar 2007 - 02:43 #6
det er forhåbentlig en gammel tråd du har fundet - idag ville jeg nok lave den
en lille smule anderledes

JList er ikke noget jeg har erfaring med, men det er der andre som har
Avatar billede duedue Nybegynder
12. januar 2007 - 14:28 #7
Her er min kode:

Frame:

package client;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import java.util.ArrayList;

import javax.swing.AbstractListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.ListModel;

public class Frame1 extends JFrame {

    ArrayList array = new ArrayList();
    private BorderLayout layoutMain = new BorderLayout();
    private JPanel panelCenter = new JPanel();
    private JMenuBar menuBar = new JMenuBar();
    private JMenu menuFile = new JMenu();
    private JMenuItem menuFileExit = new JMenuItem();
    private JMenu menuHelp = new JMenu();
    private JMenuItem menuHelpAbout = new JMenuItem();
    private JLabel statusBar = new JLabel();
    private JToolBar toolBar = new JToolBar();
    private JButton buttonOpen = new JButton();
    private JButton buttonClose = new JButton();
    private JButton buttonHelp = new JButton();
    private ImageIcon imageOpen = new ImageIcon(Frame1.class.getResource("openfile.gif"));
    private ImageIcon imageClose = new ImageIcon(Frame1.class.getResource("closefile.gif"));
    private ImageIcon imageHelp = new ImageIcon(Frame1.class.getResource("help.gif"));
    private JTextField txtNavn = new JTextField();
    private JLabel jLabel1 = new JLabel();
    private JList JList = new JList();
    private JTextField search = new JTextField();
    private JLabel jLabel2 = new JLabel();
    private JButton soeg = new JButton();
    private JButton Tilføj = new JButton();
    private JButton HentListe = new JButton();

    public Frame1() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

    private void jbInit() throws Exception {
        this.setJMenuBar( menuBar );
        this.getContentPane().setLayout( layoutMain );
        panelCenter.setLayout( null );
        this.setSize(new Dimension(484, 441));
        menuFile.setText( "File" );
        menuFileExit.setText( "Exit" );
        menuFileExit.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { fileExit_ActionPerformed( ae ); } } );
        menuHelp.setText( "Help" );
        menuHelpAbout.setText( "About" );
        menuHelpAbout.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ae ) { helpAbout_ActionPerformed( ae ); } } );
        statusBar.setText( "" );
        buttonOpen.setToolTipText( "Open File" );
        buttonOpen.setIcon( imageOpen );
        buttonClose.setToolTipText( "Close File" );
        buttonClose.setIcon( imageClose );
        buttonHelp.setToolTipText( "About" );
        buttonHelp.setIcon( imageHelp );
        txtNavn.setBounds(new Rectangle(15, 60, 220, 30));
        jLabel1.setText("Navn");
        jLabel1.setBounds(new Rectangle(15, 30, 160, 20));
        JList.setBounds(new Rectangle(260, 60, 195, 195));
        search.setBounds(new Rectangle(15, 190, 220, 30));
        jLabel2.setText("Søg");
        jLabel2.setBounds(new Rectangle(15, 165, 170, 20));
        soeg.setText("Søg");
        soeg.setBounds(new Rectangle(15, 230, 55, 30));
        soeg.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        soeg_actionPerformed(e);
                    }
                });
        Tilføj.setText("Ny");
        Tilføj.setBounds(new Rectangle(15, 95, 55, 30));
        Tilføj.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        Tilføj_actionPerformed(e);
                    }
                });
        HentListe.setText("Hent Liste");
        HentListe.setBounds(new Rectangle(15, 275, 100, 35));
        HentListe.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        HentListe_actionPerformed(e);
                    }
                });
        menuFile.add( menuFileExit );
        menuBar.add( menuFile );
        menuHelp.add( menuHelpAbout );
        menuBar.add( menuHelp );
        this.getContentPane().add( statusBar, BorderLayout.SOUTH );
        toolBar.add( buttonOpen );
        toolBar.add( buttonClose );
        toolBar.add( buttonHelp );
        this.getContentPane().add( toolBar, BorderLayout.NORTH );
        panelCenter.add(HentListe, null);
        panelCenter.add(Tilføj, null);
        panelCenter.add(soeg, null);
        panelCenter.add(jLabel2, null);
        panelCenter.add(search, null);
        panelCenter.add(JList, null);
        panelCenter.add(jLabel1, null);
        panelCenter.add(txtNavn, null);
        this.getContentPane().add( panelCenter, BorderLayout.CENTER );
    }

    void fileExit_ActionPerformed(ActionEvent e) {
        System.exit(0);
    }
   
    private void gem( ){
        try
        {
            ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( "serial.dat" ) );
            oos.writeObject ( array );
            oos.close();
        }
        catch (Exception fejl)
        {
            System.out.println("Fejl: " + fejl.toString()); 
        }
    }

    void helpAbout_ActionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(this, new Frame1_AboutBoxPanel1(), "About", JOptionPane.PLAIN_MESSAGE);
    }

    private void Tilføj_actionPerformed(ActionEvent e) {
        Info navn = new Info();
        navn.setNavn( txtNavn.getText () );
        array.add(navn);
        JList.setListData(array.toArray());
        gem(); 
    }

    private void HentListe_actionPerformed(ActionEvent e) {
        try
        {
ObjectInputStream ois = new ObjectInputStream( new FileInputStream ( "serial.dat"));
            array = (ArrayList) ois.readObject();
            ois.close();
            array.toArray();
            JList.setListData( array.toArray() );
        }
        catch( Exception fejl)
      {
          System.out.println("Fejl: " + fejl.toString()); 
      }
    }

    private void soeg_actionPerformed(ActionEvent e) {
    InfoList list = new InfoList();
    Info inf      = list.findNavn(search.getText());
    Info[] data      = new Info[1];
    data[0]          = inf;
    ListModel bigData = new AbstractListModel() {
    public int getSize() { return Short.MAX_VALUE; }
    public Object getElementAt(int index) { return "Index " + index; }
                };

    JList bigDataList = new JList(bigData);
    bigDataList.setListData(data); 
  }
}
---------------------------------------------------------
Info klasse:

package client;

import java.io.Serializable;

public class Info implements Serializable {

    private String navn;
   
    public void setNavn(String navn) {
        this.navn = navn;
    }

    public String getNavn() {
        return navn;
   
    }
    public String toString(){
        return navn;
    }
}

--------------------------------------------------------------
InfoList klasse:

package client;
import java.util.*;

public class InfoList extends ArrayList {
    public Info findNavn(String navn) {
        Info inf;
        for (int i = 0; i < size(); i++) {
            inf = (Info)get(i);
            if(inf.getNavn().equals(navn)) return inf;
        }
        return null;

    }
}
---------------------------------------------------------------
TestInfo klasse:

package client;

import java.util.*;

public class TestInfo {

    public static void main(String[] args) {
        InfoList list = new InfoList();
       
        Info inf = list.findNavn("Hansen");
        if(inf != null) {
            System.out.println(inf);
        } else {
            System.out.println("Virker ikke");
        }
    }
}
Avatar billede duedue Nybegynder
12. januar 2007 - 14:29 #8
Måske er det fordi jeg roder med 2 arrayLister - InfoList og array??
Avatar billede kalp Novice
12. januar 2007 - 17:37 #9
nok en god idé lige at kalde din JList for jList

altså

private JList JList = new JList();

til

private JList jList = new JList();

og rette det tilsvarende steder i koden.
Avatar billede duedue Nybegynder
15. januar 2007 - 13:06 #10
Tak for hjælpen kalp, send et svar så jeg kan gi' dig point...
Avatar billede kalp Novice
15. januar 2007 - 14:11 #11
weeee:)

selv tak;)
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