[ tkojemile @ 25.10.2009. 18:47 ] @

Hi,

imam ovakvu situaciju:

dignem JOptionPane i na njemu dva polja - combo i text.

u petlju postavim da se vrti sve dok tekst u combou ima "*" i dok je text field prazan:


while (fldAdditInfo.getText().equals("") && cmbSelReasonCode.getSelectedItem().contains("*")){
}


Greške su mi slijedeće:

1) kad ga ne pretvaram u string za provjeru:

symbol : method contains (java.lang.String)
location: class java.lang.Object
while (fldAdditInfo.getText().equals("") && cmbSelReasonCode.getSelectedItem().contains("*")){
^

2) kad ga stavim u toString:

symbol : method contains (java.lang.String)
location: class java.lang.String
while (cmbSelReasonCode.getSelectedItem().toString().contains("*")){

3) kad ga castam u String

symbol : method contains (java.lang.String)
location: class java.lang.Object
while (fldAdditInfo.getText().equals("") && (String)cmbSelReasonCode.getSelectedItem().contains("*")){
^
Klasa.java:495: operator && cannot be applied to boolean,java.lang.String
while (fldAdditInfo.getText().equals("") && (String)cmbSelReasonCode.getSelectedItem().contains("*")){


Provjera za samo prazan text field prolazi bez problema...

....

Ako moze mala pomoc.
Negdje je problem u logici - jer operator && moze biti za bool,string... ili sta sada već :(

Hvala unaprijed!
[ Huemaj @ 01.11.2009. 19:43 ] @
Pozdrav,

Metoda JComboBox.getSelectedItem() vraca Object, taj Object moras castovati u String da bi mogao da primjenis contains(..) metodu. To si uradio pod tackom 3 ali sa malom greskom, citav izraz desno od && si pretvorio u String a ne samo rezultat od getSelectedItem() kao sto si, pretpostavljam, htio. Znaci uradio si ovo:


Code:
while (fldAdditInfo.getText().equals("") && (String)cmbSelReasonCode.getSelectedItem().contains("*"))


umjesto ovoga:

Code:
while (fldAdditInfo.getText().equals("") && ((String)cmbSelReasonCode.getSelectedItem()).contains("*"))


mada ti ja savjetujem da uradis ovo:

Code:
while (fldAdditInfo.getText().equals("") && cmbSelReasonCode.getSelectedItem().toString().contains("*"))


Znaci trik je samo u postavljanju zagrada na odgovarajuce mjesto kojim signaliziras kompajleru u kojem redoslijedu zelis da se izrazi evaluiraju.

Sa zadnjim blokom koji sam ti napisao trebalo bi da radi bez problema ako ga ubacis tako kako sam ga napisao.


Koliko sam shvatio zelis da ti se program vrti u petlji dok god korisnik nesto ne edituje, to nije uobicajena praksa, osim toga ako si i to uspio da uradis onda znaci da dobro baratas threading-om jer ti treba jos jedan thread za takvo nesto, a ko zna threading mora biti u stanju da rijesi problem sa while optimalnije :). Javi ako ti mozemo pomoci jos nekako. I sretno!

Veliki pozdrav!