2013-05-31, 18:21
  #1
Medlem
Hej allihop, jag har gjort ett program som funkar som en telefonlista.

Koden ser ut enligt följande:

HTML-kod:
package Arbete;
import java.util.*;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;



        
        
public class Telefonbok2 {
    public static void main(String[] args) throws IOException{
        Vector kontakt = new Vector();
        boolean fortsatt = true;
        do{
            System.out.println("\nMeny");
            System.out.println("1. Mata in namn " +
                    "och nummer");
            System.out.println("2. Skriv ut namn " +
                    "och nummer");
            System.out.println("3. Ta bort ett nummer");
            System.out.println("4. Spara kontakt i en fil");
            System.out.println("5. Hämta kontakt från en fil");
            System.out.println("6. Avsluta");
            System.out.print("Ditt val: ");
            char val = Keyboard.readChar();
            
            switch(val){
                case'1':
                    System.out.println("Avsluta med #.");
                    System.out.print("Namn: ");
                    String n = Keyboard.readString();
        
            
            while (!n.equals("#")){
                    System.out.print("Nummer: ");
                    int r = Keyboard.readInt();
                    person temp = new person(n, r);
                    kontakt.add(temp);
                    System.out.print("Namn: ");
                    n = Keyboard.readString();
        }
            break;
              case'2':
        if (kontakt.isEmpty()){
            System.out.println("\nVektorn är tom");
        }
        else{
            System.out.println("\nKontaktlista");
            for (int i = 0; i < kontakt.size(); i++){
                System.out.println(kontakt.elementAt(i));               
            }
        }
            break;
              case'3':
                  System.out.print("\nTa bort nummer: ");
                  int nummer = Keyboard.readInt();
                  if (nummer >= kontakt.size() || nummer < 0){
                      System.out.println("Ej godkänt värde");
                  }
                  else{
                      kontakt.removeElementAt(nummer);
                  }
              case'4':
                try{
                  FileWriter fw = 
                  new FileWriter("kontakt.txt");
                  BufferedWriter bw = new BufferedWriter(fw);
                  PrintWriter utFil = new PrintWriter(bw);

                  for (int i = 0; i < kontakt.size(); i++){
                  person temp = (person)kontakt.elementAt(i);
                  String namn = temp.hämtanamn();
                  int r = temp.hämtanummer();

                  utFil.println(namn + "\t" + r);
                   }
                  utFil.close();
                   }
                  catch(IOException e) {
                  System.out.println("Det misslyckades");
                    }
             break;
              case'5':
                try{
                  FileReader fr = new FileReader("kontakt.txt");
                  BufferedReader inFil = new BufferedReader(fr);
                  String rad = inFil.readLine();
                  kontakt.removeAllElements();
                  while (rad != null){
                  StringTokenizer tokenizer =
                  new StringTokenizer(rad, "\t");
                  String namn = tokenizer.nextToken();
                  String r = tokenizer.nextToken();
                  person temp = new person(namn, r);
                  kontakt.addElement(temp);
                  rad = inFil.readLine();
                  }
                  inFil.close();
                  }
                  catch(FileNotFoundException e1){
                     System.out.println("Filen hittades inte.");
              }
                  catch(IOException e2){
                  System.out.println(e2);
              }
              case'6':
                  fortsatt = false;
            break;
              default:
                 System.out.println("Felinmatning");
            }
     }while (fortsatt == true);
   }
}



// Person class
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Arbete;

/**
 *
 * @author Emil
 */
public class person {
    private String namn;
    private int nummer;
    
    public person(String n, int r){
        namn = n;
        nummer = r;
    }

    person(String namn, String r) {
        throw new UnsupportedOperationException("Inte inlagd än.");
    }
    
    public String hämtanamn(){
        return namn;
    }
    
    public int hämtanummer(){
        return nummer;
    }
    
    public String toString(){
        return (namn + "\t" + nummer);
    }
}

Nu är problemet att jag vill med detta program kunna göra att det kommer upp en lista istället som jag kan sortera, alltså en grafisk application.

Ett exempel i boken jag använder ser ut såhär:

HTML-kod:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


        
        
public class Ex61 extends JFrame implements ActionListener {
    private JLabel instruktion1;
    private JLabel instruktion2;
    private JTextField inruta;
    private JTextArea utruta;
    private JButton sort;
    private String[] namn = new String[20];
    private int antal = 0;
    
    public Ex61(){
        super("Namnlista");
        
        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        p1.setLayout(new GridLayout(3,1));
        getContentPane().add(p1,"North");
        getContentPane().add(p2,"Center");
        getContentPane().add(p3,"South");
        
        instruktion1 = new JLabel("Skriv in dina uppgifter");
        instruktion2 = new JLabel("Tryck sedan på sortera");
        inruta = new JTextField(30);
        utruta = new JTextArea(20, 30);
        sort = new JButton("Sortera");
        p1.add(instruktion1);
        p1.add(inruta);
        p1.add(instruktion2);
        p2.add(utruta);
        p3.add(sort);
        
        inruta.addActionListener(this);
        sort.addActionListener(this);
        
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        pack();
        setVisible(true);
    }
    
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource() == inruta){
            String data = inruta.getText();
            namn[antal++] = data;
            inruta.setText("");
            utruta.append(data + "\n");
        }
        else{
            Sort.bubbelSort(namn, antal);
            utruta.setText("");
            for (int i = 0; i < antal; i++){
                utruta.append(namn[i] + "\n");
            }
        }
    }
  

Min fråga är, (ska skicka in uppgiften senast 23.55 ikv), kan jag på något sätt sätta ihop någon del av exemplet och min egen kod så att "telefonboken/listan" blir grafisk istället för att endast köras i netbeans?

Tack på förhand!!
Citera
2013-05-31, 18:39
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av EdgarPersson
Hej allihop, jag har gjort ett program som funkar som en telefonlista.

Koden ser ut enligt följande:

HTML-kod:
package Arbete;
import java.util.*;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;



        
        
public class Telefonbok2 {
    public static void main(String[] args) throws IOException{
        Vector kontakt = new Vector();
        boolean fortsatt = true;
        do{
            System.out.println("\nMeny");
            System.out.println("1. Mata in namn " +
                    "och nummer");
            System.out.println("2. Skriv ut namn " +
                    "och nummer");
            System.out.println("3. Ta bort ett nummer");
            System.out.println("4. Spara kontakt i en fil");
            System.out.println("5. Hämta kontakt från en fil");
            System.out.println("6. Avsluta");
            System.out.print("Ditt val: ");
            char val = Keyboard.readChar();
            
            switch(val){
                case'1':
                    System.out.println("Avsluta med #.");
                    System.out.print("Namn: ");
                    String n = Keyboard.readString();
        
            
            while (!n.equals("#")){
                    System.out.print("Nummer: ");
                    int r = Keyboard.readInt();
                    person temp = new person(n, r);
                    kontakt.add(temp);
                    System.out.print("Namn: ");
                    n = Keyboard.readString();
        }
            break;
              case'2':
        if (kontakt.isEmpty()){
            System.out.println("\nVektorn är tom");
        }
        else{
            System.out.println("\nKontaktlista");
            for (int i = 0; i < kontakt.size(); i++){
                System.out.println(kontakt.elementAt(i));               
            }
        }
            break;
              case'3':
                  System.out.print("\nTa bort nummer: ");
                  int nummer = Keyboard.readInt();
                  if (nummer >= kontakt.size() || nummer < 0){
                      System.out.println("Ej godkänt värde");
                  }
                  else{
                      kontakt.removeElementAt(nummer);
                  }
              case'4':
                try{
                  FileWriter fw = 
                  new FileWriter("kontakt.txt");
                  BufferedWriter bw = new BufferedWriter(fw);
                  PrintWriter utFil = new PrintWriter(bw);

                  for (int i = 0; i < kontakt.size(); i++){
                  person temp = (person)kontakt.elementAt(i);
                  String namn = temp.hämtanamn();
                  int r = temp.hämtanummer();

                  utFil.println(namn + "\t" + r);
                   }
                  utFil.close();
                   }
                  catch(IOException e) {
                  System.out.println("Det misslyckades");
                    }
             break;
              case'5':
                try{
                  FileReader fr = new FileReader("kontakt.txt");
                  BufferedReader inFil = new BufferedReader(fr);
                  String rad = inFil.readLine();
                  kontakt.removeAllElements();
                  while (rad != null){
                  StringTokenizer tokenizer =
                  new StringTokenizer(rad, "\t");
                  String namn = tokenizer.nextToken();
                  String r = tokenizer.nextToken();
                  person temp = new person(namn, r);
                  kontakt.addElement(temp);
                  rad = inFil.readLine();
                  }
                  inFil.close();
                  }
                  catch(FileNotFoundException e1){
                     System.out.println("Filen hittades inte.");
              }
                  catch(IOException e2){
                  System.out.println(e2);
              }
              case'6':
                  fortsatt = false;
            break;
              default:
                 System.out.println("Felinmatning");
            }
     }while (fortsatt == true);
   }
}



// Person class
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Arbete;

/**
 *
 * @author Emil
 */
public class person {
    private String namn;
    private int nummer;
    
    public person(String n, int r){
        namn = n;
        nummer = r;
    }

    person(String namn, String r) {
        throw new UnsupportedOperationException("Inte inlagd än.");
    }
    
    public String hämtanamn(){
        return namn;
    }
    
    public int hämtanummer(){
        return nummer;
    }
    
    public String toString(){
        return (namn + "\t" + nummer);
    }
}

Nu är problemet att jag vill med detta program kunna göra att det kommer upp en lista istället som jag kan sortera, alltså en grafisk application.

Ett exempel i boken jag använder ser ut såhär:

HTML-kod:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


        
        
public class Ex61 extends JFrame implements ActionListener {
    private JLabel instruktion1;
    private JLabel instruktion2;
    private JTextField inruta;
    private JTextArea utruta;
    private JButton sort;
    private String[] namn = new String[20];
    private int antal = 0;
    
    public Ex61(){
        super("Namnlista");
        
        JPanel p1 = new JPanel();
        JPanel p2 = new JPanel();
        JPanel p3 = new JPanel();
        p1.setLayout(new GridLayout(3,1));
        getContentPane().add(p1,"North");
        getContentPane().add(p2,"Center");
        getContentPane().add(p3,"South");
        
        instruktion1 = new JLabel("Skriv in dina uppgifter");
        instruktion2 = new JLabel("Tryck sedan på sortera");
        inruta = new JTextField(30);
        utruta = new JTextArea(20, 30);
        sort = new JButton("Sortera");
        p1.add(instruktion1);
        p1.add(inruta);
        p1.add(instruktion2);
        p2.add(utruta);
        p3.add(sort);
        
        inruta.addActionListener(this);
        sort.addActionListener(this);
        
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        pack();
        setVisible(true);
    }
    
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource() == inruta){
            String data = inruta.getText();
            namn[antal++] = data;
            inruta.setText("");
            utruta.append(data + "\n");
        }
        else{
            Sort.bubbelSort(namn, antal);
            utruta.setText("");
            for (int i = 0; i < antal; i++){
                utruta.append(namn[i] + "\n");
            }
        }
    }
  

Min fråga är, (ska skicka in uppgiften senast 23.55 ikv), kan jag på något sätt sätta ihop någon del av exemplet och min egen kod så att "telefonboken/listan" blir grafisk istället för att endast köras i netbeans?

Tack på förhand!!
Allt som inte har med konsollinmatningar skulle du ju kunna använda utan problem, det finns även en JFileChooser som kommer ge dig en tjusig filväljare för att hämta din lista från fil med vad det lider.


Eftersom du knycklat ihop all logik i ditt huvudprogram kommer det bli aningen joxigare att klippa och klistra än om du hade designat ditt program som väl avskilda komponenter som du kunnat använda hur du velat utan yttre beroenden, men det är klart att en hel del av koden säkerligen går att återanvända för det.
Citera
2013-05-31, 18:42
  #3
Medlem
Hej tack för svar!

Problemet är att min lärare är kass på att lära ut programmering varpå vi studenter får ta all
kod vi hittar från andra ställen och försöka fixa ihop program själva.

Jag förstår att programmet säkert är kasst gjort men det är dock ett program vilket jag är glad över att jag lyckats med.

Kan du visa vad det är jag kan använda mig av?
Citera
2013-05-31, 18:47
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av EdgarPersson
Hej tack för svar!

Problemet är att min lärare är kass på att lära ut programmering varpå vi studenter får ta all
kod vi hittar från andra ställen och försöka fixa ihop program själva.

Jag förstår att programmet säkert är kasst gjort men det är dock ett program vilket jag är glad över att jag lyckats med.

Kan du visa vad det är jag kan använda mig av?
Du har ju exempelvis kod för att lägga till och ta ur personer ur listan, den borde du ju kunna använda.

Du har ju även strukturen klar för dig hur du ska spara grejjerna till fil, det borde du ju kunna anväbnda med lite tweakning.

Du har ju även kod för att hämta in din lista, den borde du ju kunna använda.

Förslaget är dock att du designar ditt program framöver lite smartare, genom att exempelvis ha en klass som hanterar dina filoperationer för sig, så blir resten av koden inte så rörig.
Citera
2013-05-31, 19:12
  #5
Medlem
Tack så mycket för att du tagit dig tid att svara, det uppskattas.

Tyvärr har jag inte den förståelsen så jag vet hur jag ska göra, när jag tittar på koden så
ser jag att det kommer vara väldigt mycket tweaking eftersom all konsollinmatning måste bort och
då måste jag kunna sätta in det i listprogrammet någon annanstans.
Citera
2013-05-31, 19:20
  #6
Medlem
JohnLocke2s avatar
http://stackoverflow.com/questions/8...-graph-in-java
Citera
2013-05-31, 21:45
  #7
Moderator
Protons avatar
Citat:
Ursprungligen postat av EdgarPersson
Tack så mycket för att du tagit dig tid att svara, det uppskattas.

Tyvärr har jag inte den förståelsen så jag vet hur jag ska göra, när jag tittar på koden så
ser jag att det kommer vara väldigt mycket tweaking eftersom all konsollinmatning måste bort och
då måste jag kunna sätta in det i listprogrammet någon annanstans.
Du har ju trots allt kod för att rendera någon form av GUI, hur har den kommit till?

Har du kommit så långt att du kan koda ihop ett simplare GUI torde det iknappast vara några större problem att lista ut vilka delar av koden som ska in var framöver, för inte är det väl så att du har klippt och klistrat nånstans ifrån, eller använt GUI-editorn i din IDE?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in