Hallo nochmal!
Habe hier einen Button (JComponent)! Wenn ich einen Befehl an den Server schicke werden dort Status und Value geändert. Mit diesen Werte will ich mit der Methode repaintStates() meinen Button aktualisieren, sprich: neues Bild und die Progressbar hat einen anderen Wert.
Wenn ich den Button mit new ButtonComponent erstelle wird die Methe im Konstruktor erfolgreich ausgeführt. Wenn ich aber bei einem Klick auf einen Button mache, der Befehle sendet und anschließend die repaintStates() ausführe, so wird der ButtonComponent nicht aktualisiert
Hat jemand Rat?
Danke,
Lemieux
Habe hier einen Button (JComponent)! Wenn ich einen Befehl an den Server schicke werden dort Status und Value geändert. Mit diesen Werte will ich mit der Methode repaintStates() meinen Button aktualisieren, sprich: neues Bild und die Progressbar hat einen anderen Wert.
Wenn ich den Button mit new ButtonComponent erstelle wird die Methe im Konstruktor erfolgreich ausgeführt. Wenn ich aber bei einem Klick auf einen Button mache, der Befehle sendet und anschließend die repaintStates() ausführe, so wird der ButtonComponent nicht aktualisiert
Code:
package lcmc.gui;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import lcmc.client.LCMC;
import com.v8tech.mmc.j2melib.MMCObject;
import com.v8tech.mmc.j2melib.State;
public class ButtonComponent extends JComponent implements MouseListener
{
private static final long serialVersionUID = -3996539263833880302L;
private Image _iComponent;
private JProgressBar _oProgressBar;
String _sName;
String _sTyp;
JLabel _oJComponent = new JLabel();
String _sPower;
String _sValue;
private MMCObject _oMMCObj;
private GUI _mainFrame;
private Hashtable _ohtStates = new Hashtable();
private boolean _bBorderSelected = false;
private Border oBorderStandard = null; //new EtchedBorder(Color.white, Color.white);
private Border oBorderHover = null; //new EtchedBorder(Color.white, Color.white);
private Border oBorderSelected = new EtchedBorder(Color.blue, Color.blue);
public ButtonComponent(GUI mainFrame, MMCObject oMMCObj)
{
setStates(oMMCObj.getStates().getState());
setMainFrame(mainFrame);
setName(oMMCObj.getName());
setMMCObj(oMMCObj);
setTyp(oMMCObj.getType());
_oJComponent.setLayout(null);
_oJComponent.setSize(226, 120);
JLabel _oJName = new JLabel(_sName);
Font fName = new Font("Dialog", Font.PLAIN, 19);
Font fTemp = new Font("Dialog", Font.ITALIC, 19);
_oJName.setFont(fName);
_oJName.setForeground(Color.white);
_oJName.setBounds(105, -13, 126, 100);
add(_oJName);
JLabel _oJProgress = new JLabel();
JLabel _oJProgressBar = new JLabel();
_oProgressBar = new JProgressBar(JProgressBar.HORIZONTAL);
_oProgressBar.setStringPainted(true);
JLabel _oJAngabe = new JLabel();
//% Angabe
if (_sTyp.equals("comp_heizung"))
{
_oJAngabe.setText("Temperatur");
_oJAngabe.setFont(fTemp);
_oJAngabe.setBounds(100, 15, 126, 100);
_oJAngabe.setForeground(Color.white);
add(_oJAngabe);
}
else
{
_oJProgressBar.add(_oProgressBar);
_oProgressBar.setBounds(105, 74, 106, 20);
add(_oProgressBar);
}
//AN - AUS Komponente
_oJProgress.setBounds(100, 10, 126, 100);
add(_oJProgress);
//Label wird dem paint zugeordnet
add(_oJComponent).setVisible(true);
setPreferredSize(_oJComponent.getSize());
addMouseListener(this);
repaintStates();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (_iComponent != null)
{
g.drawImage(_iComponent, 0, 0, null);
}
}
public void repaintStates()
{
if (!_ohtStates.isEmpty())
{
String sPower = null;
String sValue = null;
for (Enumeration oEnumStates = _ohtStates.elements(); oEnumStates.hasMoreElements();)
{
State oState = (State)oEnumStates.nextElement();
if ("power".equalsIgnoreCase(oState.getName()))
{
sPower = oState.getValue();
}
if ("value".equalsIgnoreCase(oState.getName()))
{
sValue = oState.getValue();
}
}
if (sPower != null && sValue == null)
{
setPower(sPower);
if (sPower.equals("1"))
{
setValue("100");
}
else
{
setValue("0");
}
}
if (sPower != null && sValue != null)
{
setPower(sPower);
setValue(sValue);
}
//Bild vom Typ wird geholt
_iComponent = _mainFrame.loadImage("icons/" + _sTyp + "_" + _sPower);
_oProgressBar.setValue(Integer.parseInt(_sValue));
repaint();
}
else
{
_iComponent = _mainFrame.loadImage("icons/nopic");
_oProgressBar.setValue(0);
repaint();
}
}
public void buttonDeselected()
{
_oJComponent.setBorder(oBorderStandard);
}
public void mouseClicked(MouseEvent arg0)
{
System.out.println("ButtonComponent: " + this.hashCode());
_mainFrame.getpMain().setButtonComponent(this);
_mainFrame.getpMain().buttonSelected(this);
System.out.println("mouseClicked");
_bBorderSelected = true;
System.out.println(_sName);
_oJComponent.setBorder(oBorderSelected);
if (LCMC.isLoggedIn() == true)
{
GUI oGUI = GUI.getMainFrame();
System.out.println("gui=" + oGUI);
oGUI.getpWest().displayCommands(_oMMCObj);
}
else
{
String sFehler = "FEHLER! " + "Sie sind nicht am MMC eingeloggt! "
+ "Das bedeutet, dass sie keine Berechtigung haben, Objekte vom MMC einzulesen!";
JLabel lFehler = new JLabel(sFehler);
this.add(lFehler);
}
}
public void mouseEntered(MouseEvent arg0)
{
System.out.println("mouseEntered");
System.out.println();
if (_bBorderSelected == false)
{
_oJComponent.setBorder(oBorderHover);
}
}
public void mouseExited(MouseEvent arg0)
{
System.out.println("Exit");
if (_bBorderSelected == false)
{
_oJComponent.setBorder(oBorderStandard);
}
}
public void mousePressed(MouseEvent arg0)
{
}
public void mouseReleased(MouseEvent arg0)
{
}
public void setName(String sName)
{
_sName = sName;
}
public void setTyp(String sTyp)
{
_sTyp = sTyp;
}
public void setProgressBar(JProgressBar oProgressBar)
{
_oProgressBar = oProgressBar;
}
public void setMMCObj(MMCObject oMMCObj)
{
_oMMCObj = oMMCObj;
}
public void setMainFrame(GUI mainFrame)
{
_mainFrame = mainFrame;
}
public void setStates(Hashtable ohtStates)
{
_ohtStates = ohtStates;
}
public void setPower(String sPower)
{
_sPower = sPower;
}
public void setValue(String sValue)
{
_sValue = sValue;
}
}
Hat jemand Rat?
Danke,
Lemieux