[ akasha org. @ 14.05.2007. 11:36 ] @
Evo koda, ali nikako ne mogu da povezem da se unese cena, scrollom odredi tax Rate i kao rezultat izadje udeo. HELP

Code:

import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import java.text.DecimalFormat;
import javax.swing.JScrollBar;

public class TaxCalc extends JFrame implements ActionListener {

    public static final int MINIMUM = 0;
    public static final int MAXIMUM = 10;
    public static final int INITTAX = 2;
    
    private double pPrice;
    private double pSaleTax;
    private int pTax = INITTAX;
    
    TextField price = new TextField (12);
    JScrollBar scroll = new JScrollBar (0,INITTAX,1,MINIMUM,MAXIMUM);
    TextField taxRate = new TextField (scroll.getValue());
    TextField calc = new TextField (10);
            
    public TaxCalc () {
        super ("Tax Calculation");
        setSize (200, 150);
        setResizable (false);
        addPanels();
        addWindowListener (new WindowAdapter() {
            public void windowClosing (WindowEvent e) {
                System.exit(0);
            }
        });
        setVisible (true);
    }
    
    void addPanels () {
        
        getContentPane().setLayout (new GridLayout(3,1));
        
        Panel panel0 = new Panel ();
        panel0.add (new JLabel ("Price:     ", 2));
        panel0.add (price);
        getContentPane().add ("East", panel0);
        
        Panel panel2 = new Panel ();
        panel2.add (new JLabel ("Tax Rate:", 2));
        panel2.add (taxRate);
        panel2.add (scroll);
        getContentPane().add ("East", panel2);
        
        Panel panel3 = new Panel ();
        panel3.add (new JLabel ("Sales Tax: ", 2));
        panel3.add (calc);
        getContentPane().add ("East", panel3);
        
        price.addActionListener (this);
        taxRate.addActionListener (this);
        calc.addActionListener (this);
        scroll.addAdjustmentListener (1);
    }
    
    public void actionPerformed (ActionEvent e) {
        pPrice = Double.parseDouble (price.getText());
        pTax = scroll.getValue();
        pSaleTax = pPrice*pTax/100;
        calc.setText("" + pSaleTax);
    }

       
    public static void main(String[] args)
    {
      TaxCalc tc = new TaxCalc();
    }
}



Kuburim malko sa Listenerima
[ rj444 @ 14.05.2007. 23:41 ] @
Ovo ne moze:
Code:
scroll.addAdjustmentListener(1);

Ne mozes da dodas Listener 1, moras da napises listener za ono sto zelis pa da referencu na objekat tog listener-a prosledis kao argument ovoj metodi.

Zatim ovo isto po meni nema smisla (logicki):
Code:
price.addActionListener (this);
taxRate.addActionListener (this);
calc.addActionListener (this);

Ovde svakoj komponenti pridruzujes isti listener - this, pa se za svaki dogadjaj na svakoj komponenti poziva metoda actionPerformed, koju si ispod definisao.
Napravi posebne klase koje implementiraju interfejs ActionListener i u svakoj definisi metodu actionPerformed da radi ono sto zelis, pa ce kod izgledati ovako:

Code:
price.addActionListener (new PriceListener(this));
taxRate.addActionListener (new RateListener(this));
calc.addActionListener (new CalcListener(this));

Ovde se this prosledjuje kao argument konstruktora da bi mogao da u listener metodama actionPerformed mogao da pristupis podacima iz klase TaxCalc.
[ akasha org. @ 15.05.2007. 00:40 ] @
mhm, pogubio se satima po klasama i skroz mi je bilo naporno u pocetku, ali kada sam uhvatio fazon iscitavanja java.awt-a postalo mi je jako zanimljivo!
Problem sam resio [kacim u attachmentu].

Hvala