![]() |
|
[Java] Calculator GUI problem - Printable Version +- Hack Forums (https://hackforums.net) +-- Forum: Tech (https://hackforums.net/forumdisplay.php?fid=444) +--- Forum: Coding (https://hackforums.net/forumdisplay.php?fid=151) +---- Forum: Software Development (https://hackforums.net/forumdisplay.php?fid=118) +---- Thread: [Java] Calculator GUI problem (/showthread.php?tid=4377325) |
Calculator GUI problem - Jekwa - Aug 4, 2014 Hello Java section, I am making a calculator GUI for learning purposes I have ran into two problems, I can't seem to know how to resize the JTextField area or to have the buttons when clicked display the number on the JTextField area. By the way I am still a java noob not claiming to be an expert in Java so don't hate and tell me how to improve instead. Here is my code PHP Code Thanks I really appreciate your help! Jekwa * - Psifour - Aug 4, 2014 You need to handle the events that your JButtons throw when clicked. Simply insert the character clicked on the right side of the JTextField. Your buttons have a method for adding the listener and editing the JTextField is trivial once you know what button was pressed. * - Jekwa - Aug 4, 2014 PHP Code Doesn't that part do it? * - Psifour - Aug 4, 2014 You never specify that class as the handler for events from the buttons. Code .addActionListener(this);It is sloppy, but it should work for what you are doing. * - Jekwa - Aug 4, 2014 Thank you for your help Psifour, I appreciate it. * - Psifour - Aug 4, 2014 (Aug 4, 2014 12:09 PM)Jekwa Wrote: Thank you for your help Psifour, I appreciate it.No worries. I tried to be vague enough that you could have the pleasure of learning :D * - Jekwa - Aug 4, 2014 lmao all right thanks for that, you know what I want you to criticize every bit of the code tell me how it can be improved, or do you want to wait till I am done with the whole project first? * - Psifour - Aug 4, 2014 Hmm, I don't have the time to do a full analyses of your code right this moment, but my primary concerns would be that you separate the listener into it's own class maybe even make two children of JButton that implement ActionListener for the different types of buttons you have: numbers, and functions. If you abstract it like that you can more easily handle the non-numbered buttons and their functions. Another quick note would be to start on documentation as failing to due so now can make your project hard to read in the future (a calculator with GUI is sufficiently complex to warrant documentation and the practice will benefit you in the long run). EDIT: Sorry if I wasn't clear. I WILL look at your code so far in-depth, just not right this moment. Besides I am sure that Cosa, Fizzy, or Sparta will comment here soon. * - Dispersia - Aug 4, 2014 As soon as your action performed fires your GUI is going to freeze and you won't be able to terminate your program correctly. When you use a while(true) like that it will loop that section forever. Since you have no break condition, it will rerun that for loop over. And over. And over. Etc. If I wasn't on my phone I would type more (stupid WiFi at this condo constantly doesn't work, can't wait for the Ethernet to be setup). But until then, that needs to be fixed. Also. You don't really want the for loop either. That's just waisting time. What I would do in this scenario is run a for loop on the button array, and change the setActionCommand of each one to do as wanted. Then in actionperformed you could simply do your set text line and call e.getActionCommand instead. That would only be one call per action event, instead of constantly checking every button every time you want to do something. EDIT: I didn't see you already changed what the buttons are. In that case you don't have to change setActionCommand, your entire action performed can just be text field.set text(e.getActionCommand);, but you probably want to do text field.setText(ttextField.get text() + e.getActionCommand()); so you aren't just replacing. * - Psifour - Aug 4, 2014 Haha, I had completely missed the while(true) when I looked at that earlier. Thanks for catching that for him. |