Note that there are some explanatory texts on larger screens.

plurals
  1. POJava How to: proper GUI coding?
    primarykey
    data
    text
    <p>This one is a long one, bellow is my "primary" class that holds the majority of my UI logic and all of its listeners etc. Anyhow you can see i stuck a lot of code in to one class and the whole thing just seems unreadable however it does work.</p> <ol> <li>I created the final look of my GUI whit Netbeans GUI Editor</li> <li>The source code generated by Nebeans gives you private variables that allow you to interact whit all components you added to the form.</li> <li>I opened that Java class in Notepad and i removed all comments that prevent me from editing the generated code in Netbeans now i can edit that entire class to my liking.</li> </ol> <p>I have a separate GUI class in a separate package i call the class in my <strong>initUI()</strong> function then from here i reference all the components and write methods that get these components as arguments and add specific Listeners to those components. I also reference each GLOBAL variable whit a method setters/getters instead of directly referencing them. As you can see the list of functions is piling up in <strong>initUI()</strong> and i am not even half way there.</p> <blockquote> <p>I am guessing this is not even near professional approach, could you please provide me whit newbie tip, examples and suggestions how to improve all this code because even tho all this is working as it should it is very very ugly to look at and there are no <strong>books</strong> or <strong>tutorials</strong> that explain how approach coding a larger application.</p> <p>Also even tho i am mid way done whit this GUI i like to experiment and i have been told that JavaFX is much better for doing Java GUI and that code you get is much more pleasing that what you would get as in Java Swing but on the other hand there is a lot of down vote for JavaFX regarding that its not really fully ready for use.</p> </blockquote> <p>Anyways here is my code:</p> <pre><code>package ept.controller; import ept.view.EPTMain; import ept.model.EPTEvent_Model; import ept.model.EPTLocal_Model; import ept.model.EPTModule_Model; import java.awt.Font; import java.awt.MouseInfo; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.DefaultListModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JProgressBar; public class EPTIndex_Controler { public EPTIndex_Controler() { initUI(); } //Globals protected String selectedTower = null; protected Integer selectedModules = 0; public void setSelectedTower(String tower){ this.selectedTower = tower; } public String getSelectedTower(){ return this.selectedTower; } public void setSelectedModules(Integer i){ this.selectedModules += i; } public void decrementSelectedModule(Integer i){ this.selectedModules -= 1; } public Integer getSelectedModules(){ return this.selectedModules; } private void initUI(){ EPTMain runnable = new EPTMain(); JLabel towerName = runnable.tower_name; JComboBox towerSelect = runnable.tower_selection; JLabel shield_ = runnable.shield_amount; JLabel armor_ = runnable.armor_amount; JLabel em_ = runnable.em_amount; JLabel th_ = runnable.th_amount; JLabel kn_ = runnable.kn_amount; JLabel ex_ = runnable.ex_amount; JProgressBar cpu_bar = runnable.cpu_bar; JProgressBar cap_bar = runnable.capacitor_bar; JList mod_browse = runnable.module_browser; JList mod_select = runnable.selected_modules; Font decode = new Font("monospaced", Font.PLAIN, 12); mod_select.setFont(decode); //mod_browse.setFont(decode); setTowerName(towerName, towerSelect, shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); removeTower(towerName, shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); addModule(mod_browse, mod_select, shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); removeModule(mod_select, shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); runnable.setExtendedState(EPTMain.MAXIMIZED_BOTH); runnable.setVisible(true); } protected DefaultListModel struct = new DefaultListModel(); private void removeModule(final JList select, final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ select.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent e) { String removable = select.getSelectedValue().toString(); if(e.getClickCount() == 2 &amp;&amp; removable.equals("No modules have been selected") == false){ String cap = select.getSelectedValue().toString().substring(61, 70).trim(); String cpu = select.getSelectedValue().toString().substring(75).trim(); Integer D_CAP = Integer.valueOf(cap).intValue(); Integer D_CPU = Integer.valueOf(cpu).intValue(); decConsumedCap(D_CAP); decConsumedCpu(D_CPU); struct.removeElement(select.getSelectedValue()); incrementVariables(shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); select.setModel(struct); decrementSelectedModule(1); } } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} }); } private void addModule(final JList browse, final JList select, final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ browse.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent e) { String addable = browse.getSelectedValue().toString(); if(e.getClickCount() == 2 &amp;&amp; getSelectedTower() != null &amp;&amp; addable.charAt(0) == ' '){ String data[] = new EPTModule_Model().moduleData(addable.trim()); String module = data[0]; Integer capacitor = Integer.valueOf(data[1]).intValue(); setConsumedCap(capacitor); Integer cpu = Integer.valueOf(data[2]).intValue(); setConsumedCpu(cpu); String module_cap = data[1]; String module_cpu = data[2]; if(getConsumedCap()+capacitor &gt; getCap() || getConsumedCpu()+cpu &gt; getCpu()){ new EPTEvent_Model().eventNoCapOrCpu(); } else { struct.addElement(String.format("&gt; %-47s Capacitor: %-8s CPU: %s", module, module_cap, module_cpu)); select.setModel(struct); setSelectedModules(1); incrementVariables(shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); } } else if (e.getClickCount() == 2 &amp;&amp; getSelectedTower() == null){ new EPTEvent_Model().eventNoTowerSelected(); } } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} }); } private void removeTower(final JLabel type, final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ type.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent e) { if(getSelectedModules() == 0){ type.setText("No Control Tower Selected"); setSelectedTower(null); resetVariables(shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); } else { new EPTEvent_Model().eventModuleSelected(); } } @Override public void mousePressed(MouseEvent e) {} @Override public void mouseReleased(MouseEvent e) {} @Override public void mouseEntered(MouseEvent e) {} @Override public void mouseExited(MouseEvent e) {} }); } private void setTowerName(final JLabel type, final JComboBox type2, final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ type2.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(getSelectedTower() != null){ new EPTEvent_Model().eventTowerSelected(); } else { setSelectedTower(type2.getSelectedItem().toString()); new EPTDispatch_Controler(type, type2.getSelectedItem().toString()); updateVariables(shield_, armor_, em_, th_, kn_, ex_, cap_bar, cpu_bar); } } }); } //Referenced Globals protected int cap = 0; protected int consumed_cap = 0; protected int cpu = 0; protected int consumed_cpu = 0; public void setCap(int cap){ this.cap = cap; } public int getCap(){ return this.cap; } public void setCpu(int cpu){ this.cpu = cpu; } public int getCpu(){ return this.cpu; } public void resetConsumed(){ this.consumed_cap = 0; this.consumed_cpu = 0; } public void setConsumedCap(int consumed_cap){ this.consumed_cap += consumed_cap; } public void decConsumedCap(int consumed_cap){ this.consumed_cap -= consumed_cap; } public int getConsumedCap(){ return this.consumed_cap; } public void setConsumedCpu(int consumed_cpu){ this.consumed_cpu += consumed_cpu; } public void decConsumedCpu(int consumed_cpu){ this.consumed_cpu -= consumed_cpu; } public int getConsumedCpu(){ return this.consumed_cpu; } //Referenced Globals protected int shield = 0; protected int armor = 0; protected double em = 00.00; protected double th = 00.00; protected double kn = 00.00; protected double ex = 00.00; public void setEm(double em){ this.em = em; } public double getEm(){ return this.em; } public void setTh(double th){ this.th = th; } public double getTh(){ return this.th; } public void setKn(double kn){ this.kn = kn; } public double getKn(){ return this.kn; } public void setEx(double ex){ this.ex = ex; } public double getEx(){ return this.ex; } public void setShield(int shield){ this.shield = shield; } public int getShield(){ return this.shield; } public void setArmor(int armor){ this.armor = armor; } public int getArmor(){ return this.armor; } private void setCL(JProgressBar t, int i){ t.setValue(i); } private void incrementVariables(final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ cap_bar.setMaximum(getCap()); cap_bar.setValue(getConsumedCap()); cap_bar.setString(getConsumedCap() + " / " + getCap()); cap_bar.setStringPainted(true); cpu_bar.setMaximum(getCpu()); cpu_bar.setString(getConsumedCpu() + " / " + getCpu()); cpu_bar.setStringPainted(true); cap_bar.setValue(getConsumedCpu()); String shieldA = String.valueOf(getShield()).toString(); shield_.setText(shieldA); String armorA = String.valueOf(getArmor()).toString(); armor_.setText(armorA); double e = getEm(); String emT = String.valueOf(e); em_.setText(emT); double t = getTh(); String thT = String.valueOf(t); th_.setText(thT); double k = getKn(); String knT = String.valueOf(k); kn_.setText(knT); double x = getEx(); String exT = String.valueOf(x); ex_.setText(exT); } private void updateVariables(final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ String data[] = new EPTLocal_Model().serializeData(getSelectedTower()); Integer capA = Integer.valueOf(data[1]).intValue(); setCap(capA); cap_bar.setMaximum(getCap()); cap_bar.setString(getConsumedCap() + " / " + getCap()); cap_bar.setValue(getConsumedCap()); cap_bar.setStringPainted(true); Integer cpuA = Integer.valueOf(data[2]).intValue(); setCpu(cpuA); cpu_bar.setMaximum(getCpu()); cpu_bar.setString(getConsumedCpu() + " / " + getCpu()); cpu_bar.setValue(getConsumedCpu()); cpu_bar.setStringPainted(true); Integer shieldAmount = Integer.valueOf(data[3]).intValue(); setShield(shieldAmount); shield_.setText(data[3]); Integer armorAmount = Integer.valueOf(data[4]).intValue(); setArmor(armorAmount); armor_.setText(data[4]); Double emT = Double.valueOf(data[5]).doubleValue(); setEm(emT); em_.setText(data[5]); Double thT = Double.valueOf(data[6]).doubleValue(); setTh(thT); th_.setText(data[6]); Double knT = Double.valueOf(data[7]).doubleValue(); setKn(knT); kn_.setText(data[7]); Double exT = Double.valueOf(data[8]).doubleValue(); setEx(exT); ex_.setText(data[8]); } private void resetVariables(final JLabel shield_, final JLabel armor_, final JLabel em_, final JLabel th_, final JLabel kn_, final JLabel ex_, final JProgressBar cap_bar, final JProgressBar cpu_bar){ resetConsumed(); setCap(0); cap_bar.setMaximum(getCap()); cap_bar.setString(getConsumedCap() + " / " + getCap()); cap_bar.setStringPainted(true); setCpu(0); cpu_bar.setMaximum(getCpu()); cpu_bar.setString(getConsumedCpu() + " / " + getCpu()); cpu_bar.setStringPainted(true); setShield(0); shield_.setText("0"); setArmor(0); armor_.setText("0"); setEm(00.00); em_.setText("00.00"); setTh(00.00); th_.setText("00.00"); setKn(00.00); kn_.setText("00.00"); setEx(00.00); ex_.setText("00.00"); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload