Kezdőoldal » Számítástechnika » Programozás » Itt miért nem egyértelmű a...

Itt miért nem egyértelmű a fordítónak, hogy én mire gondoltam? (Java)

Figyelt kérdés

Egy Java alkalmazáson dolgozok aminek annyi a lényege, hogy kéz szövegdobozba be kell írni egy téglalap két oldalának hosszát, majd egy gombra kattintani, mire a gép a másik két szövegmezőbe írja az eredményt. Két fájlból áll, bemásolom mindkettőt.


//teglalapFrame.java


import javax.swing.*;

import java.awt.*;


class teglalapFrame extends JFrame{


teglalapEvent tegl=new teglalapEvent(this);


//A bal oszlop

JPanel leftPanel=new JPanel();

JTextField aField=new JTextField("0");

JLabel aLabel=new JLabel("a oldal: ");

JTextField bField=new JTextField("0");

JLabel bLabel=new JLabel("b oldal: ");

JButton okButton=new JButton("Szamolj!");

GridLayout grid=new GridLayout(2,2);


//A jobb oszlop

JPanel rightPanel=new JPanel();

JTextField tField=new JTextField("0");

JLabel tLabel=new JLabel("terulet: ");

JTextField kField=new JTextField("0");

JLabel kLabel=new JLabel("kerulet: ");

GridLayout grid2=new GridLayout(2,2);


GridLayout overall=new GridLayout(1,2);


public teglalapFrame(){

super("TeglalapFrame");


leftPanel.setLayout(grid);

leftPanel.add(aLabel);

leftPanel.add(aField);

leftPanel.add(bLabel);

leftPanel.add(bField);

leftPanel.add(okButton);

add(leftPanel);


okButton.addActionListener(tegl);


rightPanel.setLayout(grid2);

rightPanel.add(tLabel);

rightPanel.add(tField);

rightPanel.add(kLabel);

rightPanel.add(kField);

kField.setEditable(false);

tField.setEditable(false);

add(rightPanel);


setLayout(overall);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pack();

setVisible(true);

}


public static void main(String[] args){

teglalapFrame frame=new teglalapFrame();

}

}


//teglalapEvent.java


import javax.swing.*;

import java.awt.event.*;

import java.lang.Integer;


public class teglalapEvent implements ActionListener{

teglalapFrame gui;


public teglalapEvent(teglalapFrame in){

gui=in;

}


public void actionPerformed(ActionEvent event){

area();

ference();

}


public void area(){

String a_side=gui.leftPanel.aField.getText();

int a=Integer.parseInt(a_side);

String b_side=gui.leftPanel.bField.getText();

int b=Integer.parseInt(b_side);


int ar=a*b;

String ar_str=Integer.toString(ar);


gui.rightPanel.tField.setText(ar_str);

}


public void ference(){

String a_side=gui.leftPanel.aField.getText();

int a=Integer.parseInt(a_side);

String b_side=gui.leftPanel.bField.getText();

int b=Integer.parseInt(b_side);


int fer=2*(a+b);

String fer_str=Integer.toString(fer);


gui.rightPanel.kField.setText(ker_str);

}

}


A setText()-es illetve getText()-es részeknél cannot find symbol hibát dob a fordító. Angol nyelven olvastam erről a hibáról, és azt hámoztam ki, hogy akkor jön elő, ha nem elég egyértelmű, hogy mit kérünk a géptől. Pedig szerintem ez teljesen egyértelmű. Mi itt a hiba szerintetek és hogyan hárítsam el? Előre is köszi. (Java JDK 1.7-em van)

Bocs amiért olyan hosszú lett.



2013. jún. 17. 15:53
 1/3 anonim válasza:
próbáld meg így: gui.aField.getText();
2013. jún. 17. 16:30
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

Például itt: gui.leftPanel.aField.getText();


A probléma az, hogy a leftPanel-nek nincsen aField nevű adattagja.


A leftPanel.add(aField) meghívásával nem adattag jön létre, hanem a leftPanel reprezentációban egy kollekcióban helyet kap az aField referenciája.


Ahogy #1 is írta gui.aField lesz a helyes hivatkozás.


Egyébként offtopic javaslat: érdemes megszokni Java-ban a nagybetűs osztályneveket, pl. teglalapFrame helyett TeglalapFrame. :)

2013. jún. 17. 16:44
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:
Köszi szépen, mostmár értem. Tehát amit a panelhez addolok az nem maga az objektum, csak a referenciája. Köszi :)
2013. jún. 18. 10:26

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!