Hirdetés

2024. június 1., szombat

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#3751) caindwan


caindwan
tag

Heló!
Igazából még csak nemrég kezdtem az egészet. Egy ebookból tanulok és ott nem magyarázták meg a dolgot. Szóval van egy ilyen pl.:
public class AClass {
public int instanceInteger = 0;
public int instanceMethod() {
return instanceInteger;
}
public static int classInteger = 0;
public static int classMethod() {
return classInteger;
}
public static void main(String[] args) {
AClass anInstance = new AClass();
AClass anotherInstance = new Aclass();
anInstance.instanceInteger = 1;
anotherInstance.instanceInteger = 2;
System.out.println(anInstance.instanceMethod());
System.out.println(
anotherInstance.instanceMethod());
//System.out.println(instanceMethod()); //illegal
//System.out.println(instanceInteger); //illegal
AClass.classInteger = 7;
System.out.println(classMethod());
System.out.println(anInstance.classMethod());
anInstance.classInteger = 9;
System.out.println(anInstance.classMethod());
System.out.println(anotherInstance.classMethod());
}
}
Na ebben vannak olyanok a metódusban pl/anInstance.instanceInteger = 1;/ A kérdésem mit jelent az a pont?

(#3752) WonderCSabo válasza caindwan (#3751) üzenetére


WonderCSabo
félisten

Az AClass egy példányának, anInstance-nek az instanceInteger adattagját lekéri, majd 1 -et ad neki értékül.

(#3753) caindwan


caindwan
tag

Köszönöm :)

(#3754) TBG válasza Jim-Y (#3750) üzenetére


TBG
senior tag

Szia!

Van egyszerű, ronda és bonyolultabb, szebb megoldás.

1. Egyszerű, ronda.
Az AppPanel osztályt átadod a *Form-oknak konstruktorban.

2. Bonyolultabb, szebb
Csinálsz egy Listener interface-t, amit az AppPanel implementál és ott zárogatod be, ami kell.

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3755) caindwan


caindwan
tag

Ha van egy ilyen tömböm:
public boolean[] bortonajtok = {false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false};
És ez a metódus:
public boolean kulcsFordit(){
if(bortonajtok[ajto] == false){
bortonajtok[ajto] = true;
return bortonajtok[ajto];
}
else{
bortonajtok[ajto] = false;
return bortonajtok[ajto];
}
/remélem jól vannak megírva/ Hogyan tudom használni a tömbön a metódust?

(#3756) sutszi válasza caindwan (#3755) üzenetére


sutszi
veterán

Attól függ mi a cél?

Feltételezem egy van egy börtönöd aminek egy bizonyos ajtaját ki akarod nyitni...

Én inkább egy ilyet írnék:

public void kulcsFordit(boolen[] bajtok){
for (i = 0; i<bajtok.length; i++) {
if(bajtok [i]== false){
bajtok(i) = true;
}
}
}

Ez azt csinálja, hogy megkapja a bortonajtok tombjet, végig meg rajta és ami be van zárva azt kinyitja...

Így használhatod:
this.kulcsFordit(bortonajtok);

Remélem nem írtam el semmit kicsit kapkodtam...de a kérdés, hogy mit szeretnél továbbra is áll.

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#3757) Mukorka válasza caindwan (#3755) üzenetére


Mukorka
addikt

Az ajto változót át kéne adnod a függvénynek:

public boolean kulcsFordit(int ajto){
if(!bortonajtok[ajto]){
bortonajtok[ajto] = true;} //ha mást úgyse csinál az fv-d akkor itt kb még vizsgálni is felesleges...
return bortonajtok[ajto];
}

//használni meg így lehet:

boolean fordit = kulcsFordit(4);

Szerintem ennek nem sok értelme van :)

(#3758) Athlon64+ : Erre gondolhatott, gyanús.

[ Szerkesztve ]

Mukor#2214 --- "Ezt nem én gondolom így, EZ EGY TÉNY!"

(#3758) Peter Kiss válasza caindwan (#3755) üzenetére


Peter Kiss
senior tag
LOGOUT blog

public void kulcsFordit(boolen[] bajtok) {
for (i = 0; i < bajtok.length; i++) {
bajtok[i] = !bajtok[i];
}
}

(#3759) Jim-Y válasza caindwan (#3755) üzenetére


Jim-Y
veterán

Szerintem:

public void kulcsFordit(boolean[] bortonajtok,int ajto){
bortonajtok[ajto] = (bortonajtok[ajto]) ? false : true;
}

Használat:

kulcsFordit(bortonajtok, 10)

Így megadod, hogy melyik ajtót szeretnéd kinyitni / becsukni. üdv

(#3760) Karma válasza Jim-Y (#3759) üzenetére


Karma
félisten

Ezt kene otvozni az elotted levo felkialtojeles megoldassal es szerintem megvan a nyertes :P Boolean valtozo invertalasanal teljesen felesleges a ?: operator.

Ha tippelnem kene, ebbol valamikor a klasszikus bortonor problema lesz (100 zart cella, az or eloszor mindegyiet kinyitja, aztan minden masodikat becsuk, aztan minden harmadikat atbillent... egeszen szazig). Mondjuk ertelme nincs sok, biztosan iskolai feladat.

[ Szerkesztve ]

“All nothings are not equal.”

(#3761) Jim-Y válasza Karma (#3760) üzenetére


Jim-Y
veterán

Na igen, leírtam, mondom ez fasza, aztán visszaolvastam egyet, és leesett, hogy úgy mégjobb lenne,buuurn :D beírni már nem írtam be viszont :(

(#3754) TBG Köszi a választ, végül mindkettőt felhasználtam a programban, de a problémámhoz a konstruktorban objektum átadós módszert választottam most.

[ Szerkesztve ]

(#3762) WonderCSabo válasza Karma (#3760) üzenetére


WonderCSabo
félisten

invertalasanal teljesen felesleges a ?: operator

Igen, a másik kedvencem:

return i > 0 ? true : false;

:)

(#3763) fatal` válasza WonderCSabo (#3762) üzenetére


fatal`
titán

Ennél már csak az if (i>0) return true else return false jobb :D

(#3764) TBG válasza fatal` (#3763) üzenetére


TBG
senior tag

Lehet fokozni a hülyeséget :D

boolean result = i>0;
if (result==true) {
return true;
} else {
return false;
}

[ Szerkesztve ]

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3765) fatal` válasza TBG (#3764) üzenetére


fatal`
titán

Jó, ilyet szerintem senki nem ír. :D

(#3766) WonderCSabo válasza fatal` (#3765) üzenetére


WonderCSabo
félisten

Egyetemen java házikat javítok (illetve előző félévben cpp-t), hát láttam már pár érdekes dolgot, ehhez hasonlókat is. :)

(#3767) caindwan válasza sutszi (#3756) üzenetére


caindwan
tag

Az a cél, hogy a nyitott ajtót becsukja és fordítva.
Köszönöm :)

(#3768) caindwan válasza Karma (#3760) üzenetére


caindwan
tag

Igen iskolai feladat :D

[ Szerkesztve ]

(#3769) attiati


attiati
veterán

Java Eclipse feladat megoldására keresek jelentkezőt fizettségért cserébe. Lásd ---> hirdetés

[ Szerkesztve ]

(#3770) Superhun válasza attiati (#3769) üzenetére


Superhun
addikt

Szorít a beadandó határidő? ;]

(#3771) attiati válasza Superhun (#3770) üzenetére


attiati
veterán

Ne kötekedj Atrix 2 bajtárs ;]
Nem erről van szó.

(#3772) peterszky


peterszky
őstag

Java Web Starttal indított ablakot fel lehet úgy konfigurálni, hogy átméretezhető legyen?

What else you gonna do on a Saturday?

(#3773) artiny


artiny
őstag

Egy GUI-adatbazis kezelo turtorial szerint mentem ... a program lefut,mukodik csak egy bajom van vele. Ha uj sort akarok berakni az adatbazisba es miutan beraktam az uj elemet es elmentem lefagy a progi,nem tudok vissza menni,hogy ide - oda ugraljak az adatbazis elemei kozott.
Ha lezarom az X el a programot es ujbol elinditom akkor az uj elem ott van.

Hogyan lehetne megoldani,hogy ne fagyon le a progi es vissza ugorjon oda,ahol mutassa az elemeket a textfield.

a program kod a save button -hoz:

TURTORIAL forras:
http://www.homeandlearn.co.uk/java/save_a_new_record.html

a program kod a save button -hoz:
http://pastie.org/7915215

(#3774) TBG válasza artiny (#3773) üzenetére


TBG
senior tag

Az új sor hozzáadáshoz inkább az insert sql direktívát használd!

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3775) TBG válasza artiny (#3773) üzenetére


TBG
senior tag

Tehát. Itt ez a remek kód.

try {
rs.moveToInsertRow();

rs.updateInt("ID", newID);
rs.updateString("First_Name", first);
rs.updateString("Last_Name", last);
rs.updateString("Job_Title", job);

rs.insertRow();

stmt.close();
rs.close();

stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);

String sql = "SELECT * FROM Workers";
rs = stmt.executeQuery(sql);

Ehelyett inkább: (nem teljes és nem is ismerem a táblastruktúrát)

String insertSql = "INSERT INTO Workers(id,firstname) VALUES("+newID+","'"+firs+"'");
stmt.executeUpdate(insertSql);

[ Szerkesztve ]

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3776) artiny válasza TBG (#3775) üzenetére


artiny
őstag

helo.

ilyen hibat ir ki, az adatbazis szerkezete lathato a kepen es a hiba is amit kiir a netbeans,pirossal jelez a kodreszre....

http://i.imgur.com/XfOyBv2.png

megj.: az adatbazist ez alapjan lett: http://www.homeandlearn.co.uk/java/java_and_databases.html

[ Szerkesztve ]

(#3777) gygabor88 válasza artiny (#3776) üzenetére


gygabor88
tag

Elegge egyertelmuen leirja, hogy nyitottal egy karakter literalt es nem zartad le. A karakter literal helyett csak fuzd a vesszo utan a first string erteket es egy bezaro zarojelet. Talan a ; is kelleni fog az sql stringbe, nem emlekszem mar.

[ Szerkesztve ]

(#3778) artiny


artiny
őstag

próbáltam ilyet...bar ez sem mukodik.

updateInt("ID", newID); // a newID deklaraltam,mivel nincs ilye..bar nem tudom h most kell e (hibat jelez)
String insertSql = "INSERT INTO Workers (ID,FIRST_NAME,LAST_NAME,JOB_TITLE) VALUES("+newID+","'"+firs+"'","'"+last+"',"'"+job+"'"); // unclosed character literal.t jeley
stmt.executeUpdate(insertSql);

[ Szerkesztve ]

(#3779) Jim-Y válasza artiny (#3778) üzenetére


Jim-Y
veterán

Így próbáldd:

String insertSql = "INSERT INTO Workers (ID,FIRST_NAME,LAST_NAME,JOB_TITLE) VALUES("+newID+",'"+first+"','"+last+"','"+job+"';");

(#3780) artiny válasza Jim-Y (#3779) üzenetére


artiny
őstag

erre az irta hogy ";" expected

(#3781) gygabor88 válasza artiny (#3780) üzenetére


gygabor88
tag

Mert a lezaro zarojel a string literalon kivulre kerult.

(#3782) Jim-Y válasza artiny (#3780) üzenetére


Jim-Y
veterán

String insertSql = "INSERT INTO Workers (ID,FIRST_NAME,LAST_NAME,JOB_TITLE) VALUES(" + newID + ",'"+first+"','"+last+"','"+job+"');";

kimaradt a csukó zárójel..

(#3783) artiny válasza Jim-Y (#3782) üzenetére


artiny
őstag

Koszonom a valaszokat :R

most lefut :)

De viszont ezt irja amikor elakarom menteni az uj rekordot(elemet az adatbazisban):
Syntax error: Encountered ";"

probaltam igy,hogy a kod vegen kihanyom a ..st+"','"+job+"');"; ) utáni ; jelet,erre ezt irta:
ResultSet not open. Operation 'next' not permitted.

Melyikel lehet tovabb halladni,ha a st+"','"+job+"');"; a zarojel utan a ; kell oda vagy az nelkul es megkeresni hol blokkolodik a next ?

[ Szerkesztve ]

(#3784) gygabor88 válasza artiny (#3783) üzenetére


gygabor88
tag

Na a kovetkezo a helyzet. Elolvastam a kodot is, amit fentebb linkeltel es tobb problema is van.

Eloszor is ugyanarrol a threadrol irsz es olvasol adatbazist, amelyikrol GUI elemeket modositasz. A GUI tipikusan nem thread safe, a hozza tartozo elemeket (buttonok pl) a GUI threaden kell modositani. Ezen a threaden pedig nem kellene blokkolo muveleteket pl DB kezelest inditani, mert megakad az egesz felulet tole.

A masik, hogy a ResultSet-en azutan hivod meg a next() metodust miutan meghivtad a close() metodust (executeUpdate mar nem ad vissza uj ResultSetet igy a regi lezartat fogod hasznalni tovabb) es ezert kapsz "ResultSet not open. Operation 'next' not permitted." hibauzenetet.

A harmadik pedig, hogy konnyebb dolgod lenne, ha a string osszefuzogetes helyett PreparedStatementet hasznalnal, ha mar mindenkepp JDBC-vel kell megoldani a feladatot es nem hasznalhatsz valami ORM frameworkot.

[ Szerkesztve ]

(#3785) Taoharcos


Taoharcos
aktív tag

Az alábbi lenne a problémám. Egy oldalon név - jelszó párost olvasok be, amit egy statikus ArrayList-ben tárolok. Amikor hozzáadom a listához (addUser), akkor a contains -el még ellenőrizni tudom, hogy a lista tartalmazza-e, utána a loginUser-nél a contains false lesz a már felvitt név - jelszó párossal. Az ArrayList pedig tartalmazza, amíg be nem zárom a programot, mert a toString-el kiíratom és ott van.

[ Szerkesztve ]

(#3786) Taoharcos válasza Taoharcos (#3785) üzenetére


Taoharcos
aktív tag

Ja valami kód is:
package com.corejsf;

public class User {
private String name;
private String password;

public User(String name, String password){
this.name = name;
this.password = password;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

package com.corejsf;

import java.io.Serializable;
import java.util.*;
import javax.faces.bean.*;

@ManagedBean(name="userbean")
@SessionScoped
public class UserBean implements Serializable{
private String name;
private String password;
private String userListToString;
private static List userList = new ArrayList();
private User user;

public String addUser(){
user = new User(name, password);
userList.add(user);
userListToString = userList.toString();
if (userList.contains(user)){
return "thankYou";
}
else {
return "loginFail";
}
}

public String loginUser(){
user = new User(name, password);
userListToString = userList.toString();
if(userList.contains(user)){
return "thankYou";
}
else{
return "loginFail";

}
}

public String getUserListToString() {
return userListToString;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

(#3787) Mukorka válasza Taoharcos (#3786) üzenetére


Mukorka
addikt

A loginUser fv hiába csinál a meglévő adatokkal új user objektumot , az mint példány még nincs benne az arraylist-ben ezért lesz false. Mivel nem írtad felül az equals függvényt a User osztályban így az alapértelmezett (örökölt) equals azt nézi hogy ugyan az-e a két objektum memóriában tárolt elérési címe. Ez azért lényeges mivel az ArrayList is a tárolt elemek equals függvényét használja ahhoz hogy megmondja mi van a listában és mi nincs.

[ Szerkesztve ]

Mukor#2214 --- "Ezt nem én gondolom így, EZ EGY TÉNY!"

(#3788) WonderCSabo válasza Mukorka (#3787) üzenetére


WonderCSabo
félisten

Még annyi, hogy ha az equals() -ot felüldfiniáljuk, akkora hashCode()-ot is kell. Az eclipse jobb gomb -> Source -> Generate equalst() and hashCode() funkciója megteszi ezt helyettünk.

(#3789) gygabor88 válasza Taoharcos (#3786) üzenetére


gygabor88
tag

Az elottem szolokhoz meg annyit tennek hozza, hogy ha csak a contains()-t hasznalod egyelore, akkor ArrayList helyett erdemes lenne LinkedHashSetet hasznalnod. Ez a sorrendet is tartja es hatekonyabb a contains() hivas. + a collectionoknek adj meg generic tipust is <> koze.

(#3790) Mukorka válasza Taoharcos (#3786) üzenetére


Mukorka
addikt

Ha már tanácsadás megy nagyban: A ManagedBean name értéke lehetne userBean , nem pedig userbean.
Ha Serializable interface-t implementálsz akkor pedig vagy legyen serialVersionUID megadva (ezt generálja magától az eclipse is ha megkéred rá) vagy legyen Annotálva az osztály : @SuppressWarnings("serial").
Kerüld a "felkiáltójeles" kódot! ;)

Ui: inkább cseréld le a listában tárolt user megoldást adatbázisban tároltra.

[ Szerkesztve ]

Mukor#2214 --- "Ezt nem én gondolom így, EZ EGY TÉNY!"

(#3791) artiny válasza gygabor88 (#3784) üzenetére


artiny
őstag

a blokkolo dolgokat kivettem mar es az ket darab enabledot is bekapcslam a ket gombra.(save es a cancelra)
Amikt irtal a ResultSet rol azt azzal nem oldahato meg ha kommentelem a .close(); -t?

a save button ilyen most:

private void btnSaveRecordActionPerformed(java.awt.event.ActionEvent evt) {
//...................................................................................
String first = textFirstName.getText();
String last = textLastName.getText();
String job = textJobTitle.getText();
String ID = textID.getText();
int newID = Integer.parseInt(ID);

try {
VALUES("+newID+",'"+first+"','"+last+"','"+job+"')";
String insertSql = "INSERT INTO Workers (ID,FIRST_NAME,LAST_NAME,JOB_TITLE) VALUES(" + newID + ",'" + first + "','" + last + "','" + job + "')";
stmt.executeUpdate(insertSql);


rs.next();
int id_col = rs.getInt("ID");
String id = Integer.toString(id_col);
String first2 = rs.getString("First_Name");
String last2 = rs.getString("Last_Name");
String job2 = rs.getString("Job_Title");

textID.setText(id);
textFirstName.setText(first2);
textLastName.setText(last2);
textJobTitle.setText(job2);

} catch (SQLException err) {
System.out.println(err.getMessage());
}

PreparedStatementet -pedig most utana nezek

[ Szerkesztve ]

(#3792) artiny válasza artiny (#3791) üzenetére


artiny
őstag

mar mukodik. :DDD

(#3793) modder válasza Taoharcos (#3786) üzenetére


modder
aktív tag

Illetve a private static List userList = new ArrayList();-t tedd inkább egy @ApplicationScoped bean-be nem static-ként, mert semmi garancia nincs rá, hogy egy konkurens felhasználó, akit másik http worker szál szolgál ki szerver oldalon, ugyanazt fogja látni a userList-ből.

(#3794) Taoharcos


Taoharcos
aktív tag

Köszönöm a sok tanácsot, sok hasznos instrukciót kaptam.
Végül az alább látható containsUser-el oldottam meg a feladatot. Mi a véleményetek a megoldásról?

package com.corejsf;

import java.io.Serializable;
import java.util.*;
import javax.faces.bean.*;

@ManagedBean(name="userbean")
@SessionScoped
public class UserBean implements Serializable{
private String name;
private String password;
private String userListToString;
private static ArrayList userList = new ArrayList();
private User user;

public String addUser(){
user = new User(name, password);
userList.add(user);
userListToString = userList.toString();
if(containsUser(userList, user)){
return "thankYou";
}
else {
return "loginFail";
}
}

public boolean containsUser(ArrayList<User> userList, User user){
boolean isContainsUser = false;
for(int i = 0 ; i < userList.size(); i++ ){
if(userList.get(i).getName().equals(user.getName())&&userList.get(i).getPassword().equals(user.getPassword())) {
isContainsUser = true;
}
}
return isContainsUser;
}

public String loginUser(){
user = new User(name, password);
userListToString = userList.toString();
if(containsUser(userList, user)){
return "thankYou";
}
else{
return "loginFail";

}
}

public String getUserListToString() {
return userListToString;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

A JSF-el ismerkedem, csak közben gondoltam, egy kis kitérőt teszek az ArrayList irányába. Természetesen később nyilván egy adatbázis a végső megoldás. De egyszerre kezdőként nem akarok több dolgot is csinálni.

[ Szerkesztve ]

(#3795) WonderCSabo válasza Taoharcos (#3794) üzenetére


WonderCSabo
félisten

Sokkal szebb lett volna az equals-t és a hashcode-ot felüldefiniálni. A collectionnek télleg mindenképpen kéne adnod generikus típusparamétert.

Másrészt ha már megtaláltad, térj vissza rögtön, mert utána már felesleges iterálni tovább a listán.

(#3796) artiny


artiny
őstag

Valaki csinalt mar ms access filet hozza kapcsolni java hoz.?

van ez a kod:

public void Connect() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// String DatabaseFile = "D:java/Invertory.mdb";
// String DATABASE =
// "jdbc:odbc:Driver="
// + "{Microsoft Access Driver (*.mdb, *.accdb)};"
// + "DBQ=" + DatabaseFile;`enter code here`
String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb";
CONEX = DriverManager.getConnection(DATABASE);

} catch (Exception X) {
X.printStackTrace();
//JOptionPane.showMessageDialog(null,e);
}
}

ez az error uzenet:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

http://www.youtube.com/watch?v=Of4LRHOZoII
hozza adtam a control panelben az ODBC nel az Access drivert.
http://i.imgur.com/CAXievm.png

(#3797) TBG válasza Taoharcos (#3794) üzenetére


TBG
senior tag

Plusz:

private static ArrayList userList = new ArrayList();

helyett:

private static List userList = new ArrayList();

ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.

(#3798) WonderCSabo válasza TBG (#3797) üzenetére


WonderCSabo
félisten

Sztem ez egyáltalán nem hiba, ha ArrayList-et használ statikus típusként. Miért is lenne az? Az viszont sokkal nagyobb probléma, hogy nem használ generikus paramétereket.

(#3799) Superhun válasza TBG (#3797) üzenetére


Superhun
addikt

Ez miért lenne hiba?

(#3800) fatal` válasza TBG (#3797) üzenetére


fatal`
titán

Ez nem hiba, ha kellenek neki az ArrayList függvényei. Meg egyébként sem, csak így nehezebb lecserélni a lista típusát, ha másik kell.

[ Szerkesztve ]

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.