2011-12-26 2 views
0

Oke, поэтому я обновил вопрос, в том числе полный класс включил проблему в том, что даже функции incrementVariables(); работает, он не окрашивает потребляемую сумму в общей сложности JProgressBar. JProgressBar отобразит правильную потребляемую сумму, но не будет окрашивать JProgressBar.Java JProgressBar не потребляет краски

Однако я добавляю следующее к методу initUI() {cap_bar.setMaximum (5000); cap_bar.setValue (1000)}, то JProgressBar получает свои значения и их цвет.

Почему нет JProgressBar, который становится цветным, когда .setValue() вызывается в incrementVariables().

ТАКЖЕ ВТОРОЙ ВОПРОС:

Из того, что вы можете увидеть мой класс беспорядка я больше классов, которые обрабатывают дополнительные методы, так или иначе, что является профессиональным подходом к разработке GUI я предполагаю, его не так, как я делаю Это. Я создал свой графический интерфейс в отдельном классе и сделал все компоненты вызываемыми общедоступными переменными, поэтому я могу манипулировать ими вне этого класса.

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.Dimension; 
import java.awt.Font; 
import java.awt.Toolkit; 
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.JLabel; 
import javax.swing.JList; 
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 && 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 && getSelectedTower() != null && 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]; 
        struct.addElement(String.format("> %-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 && 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"); 

    } 

} 
+0

Можете ли вы предоставить [SSCCE] (http://pscode.org/sscce.html)? – Howard

+0

Почему не cap_bar.setValue(); in incrementVariables() работает –

+0

Почему все еще неправильно использовать «с»? И какой именно пункт SSCCE вы не понимаете? Без, шансы на помощь ... low – kleopatra

ответ

2

Качели GUI однопоточен и имеет одно общее правило о всех событиях должно быть сделано на EDT,

1) длинный ответ четко описанный больше в Concurrency in Swing и JProgressBar,

2) короткий ответ, вы должны вызвать в/уменьшения значения для JProgressBar из SwingWorker или Runnable#Thread, но тогда требуется выход упаковке.Размеры к GUI в invokeLater()

+0

Я вызываю JProgressBar.setValue(), который может увеличивать или уменьшать значение JProgressBar .. У меня есть invokelater, мой графический интерфейс действительно отображается, проблема заключается в том, что это не картина JProgressBar фон, поскольку он добавляет к нему ценность. –

+1

Трудно вам помочь, не публикуя http://sscce.org/ – mKorbel

+0

. Я снова понял свой вопрос, но у меня нет возможности сократить предоставленную информацию таким образом, чтобы весь класс надеялся, что я получу лучший обзор на своем проблема. –

Смежные вопросы