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?
Annonceindlæg fra Partnertekst
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)
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.
11. januar 2007 - 18:27
#3
du skal lige lave InfoList list = new InfoList(); Info inf = list.findNavn(soeg.getText());
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?
11. januar 2007 - 21:48
#5
god ide
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
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"); } } }
12. januar 2007 - 14:29
#8
Måske er det fordi jeg roder med 2 arrayLister - InfoList og array??
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.
15. januar 2007 - 13:06
#10
Tak for hjælpen kalp, send et svar så jeg kan gi' dig point...
15. januar 2007 - 14:11
#11
weeee:) selv tak;)
Kurser inden for grundlæggende programmering