Avatar billede montymus Nybegynder
18. februar 2004 - 09:37 Der er 6 kommentarer og
1 løsning

Stack samt peek og size nogen der kan hjælpe der

Jeg har lavet det her.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class GUI extends JFrame implements ActionListener {

    private java.util.Stack hat1 = new java.util.Stack();
    private JTextField input = new JTextField(5);
    private JTextArea output = new JTextArea(15,10);
    private JButton tilfoej = new JButton("Tilføj");
    private JButton smugkig = new JButton("Smugkig");
    private JButton tagAf = new JButton("Tag af");
    private JButton stoerrelse = new JButton("Størrelse");
    private JTextField output1 = new JTextField(5);
    private String stackString ="";

    //Methods
    //Constructor
    public GUI(){

        JLabel inputLab = new JLabel("Indtast data");
        JPanel dataPanel = new JPanel();
        JPanel buttonPanel = new  JPanel();
        JLabel inputLab1 = new JLabel("Uddata: Kigge / tag af");
        JPanel dataPanel1 = new JPanel();
        JLabel outLab = new JLabel("Stakken");
        JPanel dataPanel2 = new JPanel();

        getContentPane().setLayout(new FlowLayout());

        dataPanel.add(inputLab);
        dataPanel.add(input);
        getContentPane().add(dataPanel);

        input.requestFocus();

        buttonPanel.add(tilfoej);
        buttonPanel.add(smugkig);
        buttonPanel.add(tagAf);
        buttonPanel.add(stoerrelse);
        getContentPane().add(buttonPanel);

        dataPanel2.add(outLab);
        dataPanel2.add(output);
        getContentPane().add(dataPanel2);

        getContentPane().add(output);

        smugkig.addActionListener(this);
        tilfoej.addActionListener(this);
        tagAf.addActionListener(this);
        stoerrelse.addActionListener(this);

        dataPanel1.add(inputLab1);
        dataPanel1.add(output1);
        getContentPane().add(dataPanel1);

    }

    public void actionPerformed(ActionEvent hat){
        Object buttomPressed = hat.getSource();
        if (buttomPressed == tilfoej){
            stackString += "\n"+input.getText();
            output.setText(stackString);
            hat1.push(input.getText());
        }
        else if

        (buttomPressed == smugkig){

            output1.setText(""+hat1.peek());

        }
        else if
        (buttomPressed == tagAf){
            stackString = stackString.substring(0, stackString.lastIndexOf('\n'));
            output.setText(stackString);
    }
        else if

        (buttomPressed == stoerrelse){

            output1.setText(""+hat1.size());
        }
    }
    public static void main (String [] args){
        GUI gui = new GUI();
        gui.setSize(375,425);
        gui.setVisible(true);
        gui.setTitle("Stack mig i biiiip");
        gui.addWindowListener(
            new WindowAdapter() {
                public void windowClosing(WindowEvent e){
                    System.exit(0);
            }
        }
    );


}



}

Når jeg har skrevet noget ind kan den godt peek og size MEN når jeg så fjerne en tekst eller flere viser peek og size stadig startværdigen. Jeg kan ikke finde løsningen er der nogen der kan hjælpe??
Avatar billede arne_v Ekspert
18. februar 2004 - 10:12 #1
Hvor fjerner du dem fra selve Stack'en ?
Avatar billede montymus Nybegynder
18. februar 2004 - 10:18 #2
(buttomPressed == tagAf){
            stackString = stackString.substring(0, stackString.lastIndexOf('\n'));
            output.setText(stackString);
    }
Avatar billede arne_v Ekspert
18. februar 2004 - 10:26 #3
Den fjerner jo ikke fra stakken !

Den fjerner kun det visuelle fra skærmen.

Prøv og tilføj en:
  hat1.pop();
Avatar billede montymus Nybegynder
18. februar 2004 - 10:38 #4
nu ser det sådan ud

else if
        (buttomPressed == tagAf){
            //stackString = stackString.substring(0, stackString.lastIndexOf('\n'));
            output.setText(""+hat1.pop()/*stackString*/);
    }
        else if

og det virker noglunde.. dvs at når jeg trykker på tagaf så skubber den alle tallene sammen på skærmen og viser kun det tal jeg lige har taget af`???  er det sådan den skal ??
Avatar billede arne_v Ekspert
18. februar 2004 - 10:41 #5
Jeg ved jo ikke hvad du vil, men mit gæt ville have været:

  (buttomPressed == tagAf){
            hat1.pop();
            stackString = stackString.substring(0, stackString.lastIndexOf('\n'));
            output.setText(stackString);
    }
Avatar billede montymus Nybegynder
18. februar 2004 - 10:43 #6
Det her virker efter hensigten

(buttomPressed == tagAf){
            stackString = stackString.substring(0, stackString.lastIndexOf('\n'));
            output.setText(""+hat1.pop());
            output.setText(stackString);
    }

Det virker tak for hjælpen.
Smid lige svar så er der point
Avatar billede arne_v Ekspert
18. februar 2004 - 10:51 #7
svar
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