Avatar billede jarret Nybegynder
16. maj 2005 - 12:23 Der er 12 kommentarer og
1 løsning

Hvordan undgår jeg at den skriver ovenpå?

Jeg har en metode - opdatersalgsliste() - der udskriver en vareliste hvorpå det er muligt att fjerne en vare. men når jeg opdatere listen skriver den oven i det gamle "print af listen" jeg har prøve med repaint() men det virker ikke.
Hvordan fjerner jeg den gamle liste??
Avatar billede arne_v Ekspert
16. maj 2005 - 12:30 #1
hvordan udskriver den ?
Avatar billede rasmuslh Nybegynder
16. maj 2005 - 12:32 #2
Hej Arne
Undskyld jeg sådan stalker dig, men gider du at kigge i tråden Binær streng til extended ASCII under Java. Du skrev lidt den anden dag, men smuttede så. :D
Unskyld jeg hijacker tråden.

Mvh.
Rasmus
Avatar billede jarret Nybegynder
16. maj 2005 - 12:38 #3
for( int i = 0 ;i < salgsliste.size(); i++)
    {
        this.remove(knappanel);
        Vare envare = (Vare)salgsliste.get(i);
        String beskrivelse = envare.getBeskrivelse();
        double pris = envare.getPris();
               
        int antal = envare.getAntal();               
        JLabel varetilsalg;
               
        JButton knap = new JButton("Fjern");               
        Knap knaplyt = new Knap(i);               
        knap.addActionListener(knaplyt);
               
               
        if(antal > 1) varetilsalg = new JLabel(beskrivelse + " = " + pris + " kr. hvor mange" );

        else varetilsalg = new JLabel(beskrivelse + " = " + pris + " kr.");
               
               
        vareoversigt.add(varetilsalg);
        vareoversigt.add(knap);
        int k = i * 40;
        varetilsalg.setBounds(80,k,400,30);
        knap.setBounds(5,k+ 5,70,20);
        slut.setEnabled(true);       
}
Avatar billede arne_v Ekspert
16. maj 2005 - 12:41 #4
du add'er til vareoversigt - hvor fjerner du fra vareoversigt ?
Avatar billede jarret Nybegynder
16. maj 2005 - 12:50 #5
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
import java.awt.event.*;

public class SalgPanel extends JPanel implements ActionListener
{
   
    RendaGUI gui;
    JPanel vareoversigt, knappanel;
   
    JLabel total;

    JButton find, slut;
   
    FindVare vare;
   
    Salg etsalg;
   
    ArrayList salgsliste;

   
    public SalgPanel(RendaGUI gui){
       
        this.gui = gui;
        setLayout(null);
        etsalg = new Salg();
       
        vareoversigt = new JPanel();
        vareoversigt.setLayout(null);
        vareoversigt.setBackground(new Color(255, 255, 255));
       
       
        knappanel = new JPanel();
        knappanel.setLayout(null);
       
               
        find = new JButton("Find Vare");
        find.addActionListener(this);
       
       
        slut = new JButton("Gennemfør salg");
        slut.addActionListener(this);

       
        knappanel.add(find);
        find.setBounds(80,10,120,40);
        knappanel.add(slut);
        slut.setBounds(240,10,140,40);
        slut.setEnabled(false);

       
        add(vareoversigt);
        add(knappanel);
       
        total = new JLabel();
        vareoversigt.add(total);           
        total.setBounds(400,340,100,70);
       
       
        vareoversigt.setBounds(20,20,460,400);

        knappanel.setBounds(0,430,400,100);
       
        //vareoversigt.setVisible(true);
        //knappanel.setVisible(true);   
       
    }   
       
    public void opdaterSalgsliste()
    {
    //    vareoversigt.setLayout(new GridLayout(1, 4));
        salgsliste = etsalg.getVareliste();
           
        for( int i = 0 ;i < salgsliste.size(); i++)
            {
                this.remove(knappanel);
                Vare envare = (Vare)salgsliste.get(i);
                String beskrivelse = envare.getBeskrivelse();
                double pris = envare.getPris();
               
                int antal = envare.getAntal();               
                JLabel varetilsalg;
               
                JButton knap = new JButton("Fjern");               
                Knap knaplyt = new Knap(i);               
                knap.addActionListener(knaplyt);
               
               
                if(antal > 1) varetilsalg = new JLabel(beskrivelse + " = " + pris + " kr. hvor mange" );

                else varetilsalg = new JLabel(beskrivelse + " = " + pris + " kr.");
               
               
                vareoversigt.add(varetilsalg);
                vareoversigt.add(knap);
                int k = i * 40;
                varetilsalg.setBounds(80,k,400,30);
                knap.setBounds(5,k+ 5,70,20);
                slut.setEnabled(true);
                varetilsalg.repaint();       
            }

           
            String totaltal ="" + etsalg.getIalt();
           
            total.setText(totaltal + " kr.");
           
            //gui.salgpanel.repaint();
            //updateUI();
            validate();
                   

    }

public class Knap implements ActionListener{
   
    int nummer;
   
    public Knap(int i){
        this.nummer = nummer;
       
    }
   
    public void actionPerformed(ActionEvent e)
    {
        etsalg.sletVare(nummer);
       
        opdaterSalgsliste();
       
       
    }
   
   
   
}
Avatar billede arne_v Ekspert
16. maj 2005 - 12:53 #6
så vidt jeg kan se så tilføjer du kun du fjerner aldrig
Avatar billede jarret Nybegynder
16. maj 2005 - 13:08 #7
den sidste actionPerformed fjerner en vare fra objektet etsalg der er af klassen Salg.
Avatar billede jarret Nybegynder
16. maj 2005 - 13:09 #8
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import java.util.*;
   


public class Salg
{
    ArrayList salgsliste;
    double samletpris;
   
   
    public Salg()
    {
        salgsliste = new ArrayList();
    }
   
    public void tilVare(Vare tvare){
       
        salgsliste.add(tvare);
        ialt();
    }   

    public void sletVare(int nummer){
       
       
        salgsliste.remove(nummer);   
   
    }
   
    public void ialt(){
            samletpris = 0;
            for( int i = 0 ;i < salgsliste.size(); i++)
            {
           
                Vare envare = (Vare)salgsliste.get(i);

                double pris = envare.getPris();               
               
                samletpris+= pris;           
            }
               
    }
   
    public double getIalt(){
           
        return samletpris;   
    }
   
    public ArrayList getVareliste(){
       
        return salgsliste;
    }
   
   
}
Avatar billede jarret Nybegynder
16. maj 2005 - 13:11 #9
fjern metoden virker, når jeg feks forsøger at fjerne fra en liste med 4 vare overskriver den i første 3, altså skriver en ny liste med 3 vare.
Men uden at fjerne den gamle.....
Avatar billede kalp Novice
16. maj 2005 - 14:04 #10
du skal lige kalde

salgsliste.clear();

før du opdatere så du sletter alt det gamle
Avatar billede kalp Novice
16. maj 2005 - 14:05 #11
ja og hvis du kun skal fjerne et element så skal du kalde den metode du har lavet til formålet:)

det må være

public void sletVare(int nummer){
       
       
        salgsliste.remove(nummer);   
   
    }
Avatar billede jarret Nybegynder
16. maj 2005 - 14:56 #12
jeg har fundet en løsning.
Har indsat en removeAll() på mit JPanel.
Avatar billede jarret Nybegynder
16. maj 2005 - 14:58 #13
kalp - håndteringen af listen virkede fint, jeg kunne bare fjerne den gamle grafik. rent GUI problem
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