Hallo,
ich hab ein Problem beim erstellen und Anzeigen von Buttons, und zwar möcht ich die Attribute der Buttons, die erzeugt werden sollen, aus einer Textdatei einlesen (Klasse 1), in Klasse 1 soll die Methode setAttribute der Klasse 2 aufgerufen werden um die Attribute dort zu setzen, und in Klasse 3 sollen die Buttons dann zum MainPanel hinzugefügt werden.
Hat da jemand eine Idee, wie ich das realisieren könnte? In Klasse 1 lese ich ein, und geben die Attribute an Klasse 2 weiter, aber die kann von der Klasse 2 aus die Buttons mit add an das JPanel der Klasse 3 binden, bzw wie kann ich in Klasse 2 die Buttons erzeugen und dann eben weitergeben an Klasse 3?
Vielen Dank für eure Hilfe.
lg
ich hab ein Problem beim erstellen und Anzeigen von Buttons, und zwar möcht ich die Attribute der Buttons, die erzeugt werden sollen, aus einer Textdatei einlesen (Klasse 1), in Klasse 1 soll die Methode setAttribute der Klasse 2 aufgerufen werden um die Attribute dort zu setzen, und in Klasse 3 sollen die Buttons dann zum MainPanel hinzugefügt werden.
Hat da jemand eine Idee, wie ich das realisieren könnte? In Klasse 1 lese ich ein, und geben die Attribute an Klasse 2 weiter, aber die kann von der Klasse 2 aus die Buttons mit add an das JPanel der Klasse 3 binden, bzw wie kann ich in Klasse 2 die Buttons erzeugen und dann eben weitergeben an Klasse 3?
Vielen Dank für eure Hilfe.
lg
Code:
Klasse 1:
public class DateiLesen {
private MySchalter buttonAttributes;
private LineNumberReader dateiIn;
private String line;
private String[] cfgData;
private String name;
private String beschriftung;
private String icon;
private String font;
private String style;
private String umrandung;
private String hintergrundFarbe;
private String textFarbe;
private String schriftGroesse;
private String buttonBreite;
private String buttonHoehe;
private String variArrIndex;
private String enable;
private String xPos;
private String yPos;
private String textPos;
public DateiLesen(MySchalter buttonAttributes)
{
this.buttonAttributes = buttonAttributes;
try {
dateiIn = new LineNumberReader(new FileReader(System.getProperty("user.dir") + "\\Konfig.txt"));
while ((line = dateiIn.readLine()) != null)
{
if (line.startsWith("Button"))
{
cfgData = line.split(",");
name = cfgData[0];
beschriftung = cfgData[1];
icon = cfgData[2];
font = cfgData[3];
style = cfgData[4];
umrandung = cfgData[5];
hintergrundFarbe = cfgData[6];
textFarbe = cfgData[7];
schriftGroesse = cfgData[8];
buttonBreite = cfgData[9];
buttonHoehe = cfgData[10];
variArrIndex = cfgData[11];
enable = cfgData[12];
xPos = cfgData[13];
yPos = cfgData[14];
textPos = cfgData[15];
buttonAttributes.setAttribute(name, beschriftung, icon, font, style, umrandung, hintergrundFarbe, textFarbe, schriftGroesse, buttonBreite, buttonHoehe, variArrIndex, enable, xPos, yPos, textPos); //hier werden die eingelesenen Attribute an die Klasse 2 gegeben.
}
}
}
catch (IOException io) {}
}
}
Klasse 2:
public class MySchalter extends JButton
{
private DateiLesen dateiLesen = new DateiLesen(this);
private ImageIcon buttonIcon;
private MainPanel mainPanel;
public MySchalter(MainPanel mainPanel)
{
this.mainPanel = mainPanel;
}
//hier sollte eben der Button erzeugt werden, die Attribute gesetzt werden und zum MainPanel (Klasse 3) hinzugefügt werden
public void setAttribute(String name, String beschriftung, String icon, String font, String style, String umrandung, String hintergrundFarbe, String textFarbe,
String schriftGroesse, String buttonBreite, String buttonHoehe, String variArrIndex, String enable, String xPos, String yPos, String textPos)
{
setText(beschriftung);
if (!icon.equals("null"))
{
buttonIcon = new ImageIcon(System.getProperty("user.dir") + "\\pics\\" + icon);
setIcon(buttonIcon);
setVerticalTextPosition(AbstractButton.BOTTOM);
setHorizontalTextPosition(AbstractButton.CENTER);
setSize(buttonIcon.getIconWidth(), buttonIcon.getIconHeight());
setIconTextGap(new Integer(textPos).intValue());
}
else
setSize(new Integer(buttonBreite).intValue(), new Integer(buttonHoehe).intValue());
setFocusPainted(false);
setLocation(new Integer(xPos).intValue(), new Integer(yPos).intValue());
setFont(new java.awt.Font(font, new Integer(style).intValue(), new Integer(schriftGroesse).intValue()));
if (enable.equals("enabled"))
setEnabled(true);
else if (enable.equals("disabled"))
{
setEnabled(false);
}
else
setEnabled(true);
if (textFarbe.equals("hellgrau"))
setForeground(Color.LIGHT_GRAY);
else if (textFarbe.equals("grau"))
setForeground(Color.GRAY);
setVisible(true);
}
}
Klasse 3:
public class MainPanel extends javax.swing.JPanel {
private Image mainBild;
private JLabel label;
private Panel1 p;
public MainPanel() {
initComponents();
mainBild= getToolkit().getImage(System.getProperty("user.dir") + "\\pics\\Bild.png");
MediaTracker mt = new MediaTracker(this);
mt.addImage(mainBild, 0);
try { mt.waitForAll();}
catch (InterruptedException e) {}
setLayout(null);
setBounds(10, 10, hintergrundBild.getWidth(this), mainBild.getHeight(this));
setBackground(Color.GRAY);
setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
p = new Panel1 (mainBild);
p.setBounds(0,0,hintergrundBild.getWidth(this), mainBild.getHeight(this));
add(p);
}
// hier ist dann nur mehr die initComponents()- Methode