lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Nå har jeg fått til et eller annet, tror jeg. Hvis ikke så får jeg ta det på revidert. Får fortsette med resten av oppgaven nå. *sukk* Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Noen som har tips til denne delen av oppgaven? Før laget dere en GUI som viste informasjon om dyr og foringstidspunkt. Denne gangen skal dere i tillegg kunne søke etter et bestemt dyr med navn. Informasjonen som finnes, skal da komme opp i vinduet under søkefeltet. I prosjektet address-book-v2g kunne en søke etter en bestemt nøkkelverdi i adresseboken. Boken er organisert som en TreeMap fordi denne er sortert. Dere skal implementere en tilsvarende løsning hvor det skal være mulig å søke etter et bestemt dyrenavn. Det kan være vanskelig å huske eksakt hvordan et dyrenavn er skrevet, så en skal få opp forslag til alle navn som begynner på de bokstavene en har skrevet i søkefeltet. (For at du skal forstå hva som menes, bør du kjøre programmet fra prosjektet address-book-v2g. Den løsningen kan brukes med noen omskrivninger. All GUI-koden kan brukes som den er, men variable etc må byttes ut.) TIPS 1: Implementer en egen mapping mellom dyrenavn og dyr. Denne kan ligge i klassen Zoo. Skriv en metode som genererer denne mappingen. TIPS 2: For lettere å lage en slik mapping i Zoo, kan dere lage en metode i Enclosure som returnerer alle dyrene den inneholder (i et Set). Hvis søkestrengen matcher et eller flere dyrenavn, skal all informasjon om disse dyrene vises under. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Off, dette går rett vest... 2 timer og 5 minutter igjen. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Nå fikk jeg litt hjelp, se åssen d går... Lenke til kommentar
buskmann Skrevet 25. april 2007 Del Skrevet 25. april 2007 (endret) Smell refereanser til alle ZooAnimal'ene du lager inn en ArrayList. For å søke etter navn, kan du da bare iterere gjennom ArrayList'a di og se etter likhet (Object.equals) mellom søkestringen og en String.substring av ZooAnimal.name. Endret 25. april 2007 av buskmann Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Off, dette går rett vest... 2 timer og 5 minutter igjen. 8472379[/snapback] Ja, sånn kan det gå når man ikke følger med i timen.. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Okay, noen som kan hjelpe meg litt med dette så jeg kommer litt mer i boks? Nå har jeg lagt inn ny kode som skal kunne søke etter dyr. import java.util.*; public class Zoo { private Set<Enclosure> enclosures; /** * Constructor for objects of class Zoo. It is created in the spring. */ public Zoo() { // Opprett samlingen av dyreinnhegninger enclosures = new HashSet<Enclosure>(); } /** * Legg til en ny innhegning. * @param enc En innhegning som skal legges til samlingen med innhegninger for denne dyrehagen. */ public void addEnclosure(Enclosure enc) { enclosures.add(enc); } /** * Sum up the number of animals in all the enclosures * @return Totalt antall dyr i dyrehagen. */ public int getTotalNoOfAnimals() { int nr = 0; for (Enclosure enclosure : enclosures) { nr += enclosure.getNumberOfAnimals(); } return nr; } /** * Search for all details stored under a key that starts with * the given prefix. * @param keyPrefix The key prefix to search on. This may be * of zero length, but must not be null. * @return An array of those details that have been found. */ public Zoo[] search(String keyPrefix) { // Build a list of the matches. List<ZooAnimal> matches = new LinkedList<ZooAnimal>(); if(keyPrefix != null) { // Find keys that are equal-to or greater-than the prefix. SortedMap<String, ZooAnimal> tail = enclosure.tailMap(keyPrefix); Iterator<String> it = tail.keySet().iterator(); // Stop when we find a mismatch. boolean endOfSearch = false; while(!endOfSearch && it.hasNext()) { String key = it.next(); if(key.startsWith(keyPrefix)) { matches.add(book.get(key)); } else { endOfSearch = true; } } } ContactDetails[] results = new ContactDetails[matches.size()]; matches.toArray(results); return results; } /** * Collect a list of when the animals are fed. This list should be sorted according to time. * If a feedingtime is not set, a message is printed to the screen. * @return En strengerepresentasjon av foringsplanen for dyrehagen. */ public String getFeedingPlan() { String entry[]; ArrayList<String> feedingplan = new ArrayList<String>(); // Fyll samlingen for (Enclosure enclosure : enclosures){ entry = enclosure.getFeedingPlan(); for (int i = 0; i < entry.length; i++){ feedingplan.add(entry[i]); } } // feedingplan er ikke sortert, så den må sorteres. Til dette brukes Collections (sjekk dokumentasjon). Collections.sort(feedingplan); //Sørg for en fornuftig formatering av listen StringBuffer buffer = new StringBuffer(100); buffer.append("Dyrene mates:\n"); for (String str : feedingplan) { if(str.startsWith(Enclosure.notDefined)) buffer.append("\tForingstidspunkt for " + str + " er ikke ferdig spesifisert.\n"); else buffer.append("\t" + str + "\n"); } return buffer.toString(); } /** * Print a list of the animals in all the enclosures in the zoo. * @return A string representasjon av informasjonen dyrene i dyrehagen. */ public String toString () { //StringBuffer gir bedre ytelse enn String fordi en String er uforanderlig (immutable). StringBuffer buffer = new StringBuffer(100); // parameter angir default størrelse. buffer.append("Det er " + getTotalNoOfAnimals() + " dyr i dyrehagen.\n"); for (Enclosure enclosure : enclosures) { buffer.append(enclosure); // calls enclosure.toString() } return buffer.toString(); // må returnere tilbake til String ved avslutning. } } [/QUOTE] [CODE]import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Write a description of class ZooViewer here. * * @author (your name) * @version (a version number or a date) */ public class ZooGUI extends JFrame { private static final String VERSION = "Version 0.4"; private static final int PREFERRED_WIDTH = 500; private static final int PREFERRED_HEIGHT = 500; private static final Dimension PREFERRED_SIZE = new Dimension(PREFERRED_WIDTH,PREFERRED_HEIGHT); private Zoo zoo; /** * Constructor for objects of class ZooViewer */ public ZooGUI(Zoo zoo) { super("Dyrehagen vår"); this.zoo = zoo; addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { setVisible(false); } }); final Container contentPane = getContentPane(); JTabbedPane tabbedArea = new JTabbedPane(); tabbedArea.add("List dyrene", setupListArea(zoo.toString())); tabbedArea.add("List foringstidspunkt", setupListArea(zoo.getFeedingPlan())); contentPane.add(tabbedArea); setSize(PREFERRED_SIZE); } //------------------------------------------------------------------------------- /** * Show the window if it has been closed. */ public void showWindow() { setVisible(true); } /** * @return The preferred size of this window. */ public Dimension getPreferredSize() { return PREFERRED_SIZE; } /** * Set up the panel for searching the entries. * @return The completed panel. */ private Container setupSearchZoo() { // Set up the area for entering the search string. Box searchLabelArea = Box.createHorizontalBox(); searchLabelArea.add(new JLabel("Search", JLabel.LEFT)); searchLabelArea.add(Box.createGlue()); final JTextField searchField = new JTextField(50); Box searchArea = Box.createHorizontalBox(); searchArea.add(searchLabelArea); searchArea.add(searchField); // Set up the area where the resuts will be displayed. final JTextArea resultList = new JTextArea(10,50); resultList.setEditable(false); JScrollPane scrollArea = new JScrollPane(resultList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); // Any change to the name field causes a new search of // the address book to be made. searchField.getZoo().addZooListener(new ZooListener(){ public void changedUpdate(DocumentEvent ev) { research(); } public void insertUpdate(DocumentEvent ev) { research(); } public void removeUpdate(DocumentEvent ev) { research(); } /** * Search the address book and present the results unless * the search string is empty, in which case the results * area is cleared. */ private void research() { String searchString = searchField.getText(); StringBuffer buffer = new StringBuffer(); if(searchString.length() > 0) { ContactDetails[] results = book.search(searchString); for(int i = 0; i < results.length; i++) { buffer.append(results[i].toString()); buffer.append('\n'); buffer.append('\n'); } } resultList.setText(buffer.toString()); } }); JPanel listArea = new JPanel(); listArea.setLayout(new BorderLayout()); listArea.add(searchArea, BorderLayout.NORTH); listArea.add(scrollArea, BorderLayout.CENTER); return listArea; } private JPanel setupListArea(String what) { // set up the area to list out the animals final JTextArea details = new JTextArea(10,50); final String txt = what; details.setEditable(false); JScrollPane scrollArea = new JScrollPane(details, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); JPanel buttonArea = new JPanel(); JButton list = new JButton("List ut"); JButton clear = new JButton("Tøm liste"); // list all the entries list.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { details.setText(txt); } }); // Clear the details area. clear.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ev) { details.setText(""); } }); buttonArea.add(list); buttonArea.add(clear); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(scrollArea, BorderLayout.CENTER); panel.add(buttonArea, BorderLayout.SOUTH); return panel; } /** * Vis about-vindu */ private void showAbout() { JOptionPane.showMessageDialog(this, "Dyrehagen vår\n" + VERSION, "Om dyrehagen vår", JOptionPane.INFORMATION_MESSAGE); } } Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 yess, nå detter det på plass. :D:D Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Nå har jeg faktisk fått til oppgaven. Jeg ofret 5 minutter til litt mat og drikke, så fikk jeg en kompis til å forklare meg litt saker og ting. Og med det så datt det jeg trengte på plass og jeg fikk til oppgaven. Tusen takk alle sammen her inne som har gitt meg råd også. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå