Stránka 1 z 2

Java - swing problem  Vyřešeno

Napsal: 02 úno 2014 21:50
od Programzero
Zdravim, dostali jsme úkol naprogramovat kalkulačku která bude fungovat přes swing. Ale mám zde problém ( příloha ), udělal jsem ke knoflíčkům ActionListenery, a v potřebuji aby v každém tom action listeneru se int a nastavila na takovou hodnotu jak uvádím. Jenže to a se prostě nechce zdědit na ten poslední ActionListener ten poslední čudlík ( button, ten ActionListener úplně dole ). Nevítě někdo jak tu int a nastavit aby měla takovou hodnotu jak se nastaví v tom plusu, mínusu.. i v tom ActionListeneru toho buttonu?

Kód: Vybrat vše

package dokonala;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NewClass extends JFrame {
    public final String title = "Kalkulačka";
    public final int w1 = 600;
    public final int w2 = 100; 
        public  NewClass()
    {
    JFrame frame = new JFrame();
    JPanel p = new JPanel();
    JPanel t = new JPanel();
    JButton button = new JButton("Výsledek");
    final JButton plus = new JButton("+");
    final JButton minus = new JButton("-");
    final JButton krat = new JButton("*");
    final JButton deleno = new JButton("/");
    this.setLayout(new BorderLayout());
    final JTextField field = new JTextField(6);
    final JTextField field2 = new JTextField(6);
    final JTextField field3 = new JTextField(1);
    p.setBackground(Color.YELLOW);
    this.setTitle(title);
    this.setSize(w1,w2);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.add(p, BorderLayout.CENTER);
    p.add(field, BorderLayout.WEST);
    p.add(plus);
    p.add(minus);
    p.add(krat);
    p.add(deleno);
    p.add(field2, BorderLayout.EAST);
   
    plus.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int a = 1;
        }
    });
     minus.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int a = 2;
        }
    });
      krat.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int a = 3;
        }
    });
       deleno.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int a = 4;
        }
    });
   
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String first = field.getText();
            String second = field2.getText();
            String function = field3.getText();
            int first1;
            int second2;
            first1 = Integer.parseInt(first);
            second2 = Integer.parseInt(second);
            System.out.println(" " + first1 + " " + second2 + " " + a );
           
        }
    });
   
    this.add(button, BorderLayout.EAST);
    this.setResizable(false);
  }       
}

Re: Java - swing problem

Napsal: 03 úno 2014 00:16
od CZechBoY
To samozřejmě nejde. Musels bys tu proměnnou deklarovat někde vejš, aby tam obě metody viděly.

Re: Java - swing problem

Napsal: 03 úno 2014 15:59
od Programzero
Dal jsem ji nahoru ještě před ActionListenery ale do metody kde ty ActionListenery jsou. V příloze je vidět jak jsem to udělal. A na posledním obrázku je vidět že jsem si nastavil aby když se to A nastaví se později vypsalo do konzole. Jenže konzole stejně vypusuje nulu..

--- Doplnění předchozího příspěvku (03 Úno 2014 16:00) ---

/: Jenže by měla vypsat trojku, jelikož jsem klik na nasobeni

Re: Java - swing problem

Napsal: 03 úno 2014 16:05
od domitea
Musí se jednat stále o to jediné a, takhle tam máš dvě: Jedno co platí na všechno (to je furt 0) a pak ještě druhé, které platí v rámci toho Listeneru (do kterého to zapisuješ). Takže si z Listerenů odstraň deklaraci int (jen smázni int) a mělo by to jet :wink:

Re: Java - swing problem

Napsal: 03 úno 2014 16:12
od Programzero
Tak jsem sundal int, ostatně můžeš to vidět v příloze. Jenže v těch ActionListenerech to vyhazuje chybu. Tak na tu žárovičku kliknu a vymaže to final, znovu to vyhazuje chybu tak na ni znovu klikám a teď to zase final přidá :D

Re: Java - swing problem

Napsal: 03 úno 2014 17:25
od CZechBoY
Dej pryč final a rozjeď to.

Re: Java - swing problem

Napsal: 03 úno 2014 17:31
od Programzero
Dal jsem přič final, kliknu na tlačítko některé z funkcí a padne to :( :D

Re: Java - swing problem

Napsal: 03 úno 2014 17:33
od CZechBoY
dej to a někam úplně nahoru. Tys to dal do nějaký metody ne?

Re: Java - swing problem

Napsal: 03 úno 2014 17:37
od Programzero
Takle jsem to dal ..

Kód: Vybrat vše

package dokonala;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NewClass extends JFrame {
    public final String title = "Kalkulačka";
    public final int w1 = 600;
    public final int w2 = 100; 
        public  NewClass()
    {
    JFrame frame = new JFrame();
    JPanel p = new JPanel();
    JPanel t = new JPanel();
    JButton button = new JButton("Výsledek");
    final JButton plus = new JButton("+");
    final JButton minus = new JButton("-");
    final JButton krat = new JButton("*");
    final JButton deleno = new JButton("/");
    this.setLayout(new BorderLayout());
    final JTextField field = new JTextField(6);
    final JTextField field2 = new JTextField(6);
    final JTextField field3 = new JTextField(1);
    p.setBackground(Color.YELLOW);
    this.setTitle(title);
    this.setSize(w1,w2);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.add(p, BorderLayout.CENTER);
    p.add(field, BorderLayout.WEST);
    p.add(plus);
    p.add(minus);
    p.add(krat);
    p.add(deleno);
    p.add(field2, BorderLayout.EAST);
    int a = 0;
    plus.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            a = 1;
        }
    });
     minus.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            a = 2;
        }
    });
      krat.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            a = 3;
        }
    });
       deleno.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            a = 4;
        }
    });
   
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String first = field.getText();
            String second = field2.getText();
            String function = field3.getText();
            int first1;
            int second2;
            first1 = Integer.parseInt(first);
            second2 = Integer.parseInt(second);
            System.out.println(" " + first1 + " " + second2 + " " + a );
           
        }
    });
   
    this.add(button, BorderLayout.EAST);
    this.setResizable(false);
  }       
}

Re: Java - swing problem

Napsal: 03 úno 2014 17:39
od CZechBoY
jj dej do úplně nahoru

Re: Java - swing problem

Napsal: 03 úno 2014 17:41
od Programzero
Mimo metodu nebo na její začátek?

--- Doplnění předchozího příspěvku (03 Úno 2014 17:41) ---

Mimo metodu nebo na její začátek?

Re: Java - swing problem

Napsal: 03 úno 2014 17:42
od CZechBoY
Do třídy.