hi java expert, trying learn java. practising basic problem. in case, idea take 2 number user , calculate numbers based on user demand (plus/minus). can trying implement problem in jframe , have failed achieve want do!! getting error when trying pass numbers via window.number1 , window.number2. error message :
window cannot resolved variable
so can me figure out need change programme.
calculate.java
package day1.examples; public class calculate { double number1; double number2; public double[] calculatenumber() { double plus = number1+number2; double minus = number1-number2; return new double[] {plus,minus}; } }
testcalculate.java
package day1.examples; import java.awt.eventqueue; import java.awt.window; import javax.swing.jframe; import javax.swing.joptionpane; import javax.swing.jtextfield; import javax.swing.jbutton; import java.awt.event.actionlistener; import java.awt.event.actionevent; import javax.swing.jlabel; import java.awt.font; import javax.swing.jcombobox; import javax.swing.defaultcomboboxmodel; public class testcalculate { private jframe frame; private jtextfield textfieldnum1; private jtextfield textfieldnum2; private jtextfield textfieldtotres; private jlabel lblnewtlabeltotnum; private jlabel lblnewlabelnum1; private jlabel lblnewlabelnum2; private jcombobox<object> comboboxnum; private double totalres; private string itemselect; /** * launch application. */ public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { try { testcalculate window = new testcalculate(); window.frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create application. */ public testcalculate() { initialize(); } /** * initialize contents of frame. */ private void initialize() { frame = new jframe(); frame.setbounds(100, 100, 450, 300); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.getcontentpane().setlayout(null); textfieldnum1 = new jtextfield(); textfieldnum1.setbounds(10, 37, 106, 25); frame.getcontentpane().add(textfieldnum1); textfieldnum1.setcolumns(10); textfieldnum2 = new jtextfield(); textfieldnum2.setbounds(194, 37, 106, 25); frame.getcontentpane().add(textfieldnum2); textfieldnum2.setcolumns(10); jbutton btnnewsbuttonenter = new jbutton("enter"); btnnewsbuttonenter.addactionlistener(new actionlistener() { public void actionperformed(actionevent e) { final double num1; final double num2; try { num1 = double.parsedouble(textfieldnum1.gettext()); num2 =double.parsedouble(textfieldnum2.gettext()); window.number1 = num1; window.number2 = num2; comboboxnum.addactionlistener(new actionlistener() { if ((comboboxnum.getselecteditem()) == "plus") { totalres = window.calculatetotalpay()[0]; itemselect ="plus"; } else if ((comboboxnum.getselecteditem()) == "minus") { totalres = window.calculatetotalpay()[1]; itemselect ="minus"; } if (itemselect == "plus" || itemselect == "minus"){ textfieldtotres.settext(double.tostring(totalres)); } else { joptionpane.showmessagedialog(null, "enter valid option"); } } catch (exception ex) { joptionpane.showmessagedialog(null, "enter valid number"); } } }); jbutton btnnewbuttonclear = new jbutton("clear"); btnnewbuttonclear.addactionlistener(new actionlistener() { public void actionperformed(actionevent e) { reset(); } }); btnnewsbuttonenter.setbounds(20, 74, 84, 25); frame.getcontentpane().add(btnnewsbuttonenter); btnnewbuttonclear.setbounds(204, 74, 84, 25); frame.getcontentpane().add(btnnewbuttonclear); textfieldtotres = new jtextfield(); textfieldtotres.setbounds(198, 155, 200, 50); frame.getcontentpane().add(textfieldtotres); textfieldtotres.setcolumns(10); lblnewtlabeltotnum = new jlabel("result"); lblnewtlabeltotnum.setfont(new font("garuda", font.bold | font.italic, 14)); lblnewtlabeltotnum.setbounds(29, 162, 106, 34); frame.getcontentpane().add(lblnewtlabeltotnum); lblnewlabelnum1 = new jlabel("enter 1st number"); lblnewlabelnum1.setbounds(10, 0, 106, 34); frame.getcontentpane().add(lblnewlabelnum1); lblnewlabelnum2 = new jlabel("enter 2nd number"); lblnewlabelnum2.setbounds(194, 0, 97, 40); frame.getcontentpane().add(lblnewlabelnum2); comboboxnum = new jcombobox<object>(); comboboxnum.addactionlistener(new actionlistener() { public void actionperformed(actionevent e) { system.out.println(comboboxnum.getselecteditem()); } }); comboboxnum.setmodel(new defaultcomboboxmodel<object>(new string[] {"--------------", "plus", "minus"})); comboboxnum.setbounds(331, 37, 58, 40); frame.getcontentpane().add(comboboxnum); } public void reset() { textfieldnum1.settext(""); textfieldnum2.settext(""); textfieldtotres.settext(""); } }
- you never instantiate calculate class.
- you name testcalculate instance "window", refer member variables in calculate (e.g., window.number1) not in testcalculate.
- you adding actionlistener
comboboxnum
inside of actionperformed methodbtnnewsbuttonenter
actionlistener. move nested actionlistener out of method.