Button erzeugen mit 3 Klassen

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
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


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
 

MQue

Top Contributor
Ich habs schon gelöst,
Vielen Dank für Eure sehr hilfreichen Antworten immer!!

lg
 

André Uhres

Top Contributor
Ich hab das mal ein wenig vereinfacht:
Code:
package weitergeben;
/*
 * Main.java
 */
import javax.swing.*;
public class Main {
    private Einlesen einlesen;
    private Mainpanel mainpanel;
    private MeinButton meinButton;
    public Main() {
        mainpanel = new Mainpanel();
        einlesen = new Einlesen(mainpanel);
        JFrame f = new JFrame();
        f.setSize(400,300);
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.add(mainpanel);
        f.setVisible(true);
    }
    public static void main(final String[] args) {
        new Main();
    }
}
Code:
package weitergeben;
/*
 * Einlesen.java
 */
public class Einlesen {
    private MeinButton meinButton;
    private Mainpanel mainpanel;
    private String s1, s2;
    public Einlesen(final Mainpanel mainpanel) {
        this.mainpanel = mainpanel;
        s1 = "Test";
        s2 = "Test Tooltip";
        meinButton = new MeinButton(mainpanel);
        meinButton.setAttribute(s1, s2);
    }
}
Code:
package weitergeben;
/*
 * MeinButton.java
 */
import javax.swing.*;
public class MeinButton extends JButton{
    private Mainpanel mainPanel;
    public MeinButton(final Mainpanel mainPanel){
        this.mainPanel = mainPanel;
    }
    public void setAttribute(final String s1, final String s2){
        setText(s1);
        setToolTipText(s2);
        mainPanel.add(this);
    }
}
Code:
package weitergeben;
/*
 * Mainpanel.java
 */
import javax.swing.*;
public class Mainpanel extends JPanel{
    public Mainpanel() {
        
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M JavaFX Button mit mehreren Aktionen? Allgemeine Java-Themen 7
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
Tacofan Button nicht mehr anklickbar machen Allgemeine Java-Themen 8
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
J Java eigenen Button programmieren (ob Cursor im Rechteck ist oder nicht..../button pressed or not) Allgemeine Java-Themen 6
F Klassen Klasse bei Button klick öffnen Allgemeine Java-Themen 11
J JScrollPane und Button erscheinen nicht Allgemeine Java-Themen 13
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
B Button im Web klicken Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
J Swing Eigenes Button-design Allgemeine Java-Themen 2
H WAV abspielen nach Button-Klick Allgemeine Java-Themen 4
G Button-Registrierung beim ActionListener erst NACH Tastendruck Allgemeine Java-Themen 2
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
A Button drücken Allgemeine Java-Themen 3
S Thread anhalten per Button ? Allgemeine Java-Themen 3
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
M HTTP Selenium button klicken Allgemeine Java-Themen 2
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
X Button während Thread aktiv ist disablen Allgemeine Java-Themen 11
C Button geben Fehlermeldung aus Allgemeine Java-Themen 5
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
R [Android]Wie dynamischen Button-Feld erstellen? Allgemeine Java-Themen 3
F WebBrowser Button automatisch drücken Allgemeine Java-Themen 5
L mit Button jar.Datei öffnen? Allgemeine Java-Themen 5
1 URL mit Button öffnen Allgemeine Java-Themen 29
L Thread stoppen über Button funktioniert nicht Allgemeine Java-Themen 7
ModellbahnerTT Button mit Zahlen beschriften Allgemeine Java-Themen 1
E JTidy html "hidden" Button drücken Allgemeine Java-Themen 7
G Button-Array überschreiben und dem Container zufügen? Allgemeine Java-Themen 2
G Icon auf Button Allgemeine Java-Themen 5
N Button Allgemeine Java-Themen 3
G Schleife durch Button beenden Allgemeine Java-Themen 6
G wenn Button geklickt -> regelmäßig Aktion ausführen Allgemeine Java-Themen 7
G default button für enter taste Allgemeine Java-Themen 3
T JTabbedPane nach Button-Klick wechseln Allgemeine Java-Themen 3
E Button disablen Allgemeine Java-Themen 8
T Button Array verschieben klappt nicht. Allgemeine Java-Themen 6
T Button Action Allgemeine Java-Themen 10
G swt button Allgemeine Java-Themen 6
M Methode soll warten, bis Button gedrückt Allgemeine Java-Themen 2
P Button automatisch drücken Allgemeine Java-Themen 5
M bei Klick auf Button Datei einlesen Allgemeine Java-Themen 3
E Button mit 2zeiliger Beschriftung Allgemeine Java-Themen 3
ElViZ HTML-Button mit Java "drücken" lassen? Allgemeine Java-Themen 3
MQue Button setEnabled() Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
MQue Button Attribute setzen Allgemeine Java-Themen 14
MQue Button ansprechen Allgemeine Java-Themen 5
MQue Button mit Icon und Beschriftung Allgemeine Java-Themen 7
MQue Button Event beim drücken und beim auslassen Allgemeine Java-Themen 7
P JComponenten (Button, JSlider, usw) erweitern Allgemeine Java-Themen 12
E Button: Event auslösen Allgemeine Java-Themen 7
E Mit Button ein Fenster öffnen Allgemeine Java-Themen 4
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
P invoke per button Allgemeine Java-Themen 5
D Button-Sprache und windowClosing Allgemeine Java-Themen 6
G Text und Bild/Icon im Label/Button positionieren/ausrichten Allgemeine Java-Themen 2
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
D Bild per Button painten Allgemeine Java-Themen 5
V Button schließen - NullPointerException Allgemeine Java-Themen 6
H Button ist nicht ansprechbar Allgemeine Java-Themen 4
S 100 Fehler bei Button machen :) Allgemeine Java-Themen 9
G Fenster durch eigenen Button minimieren Allgemeine Java-Themen 6
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
S Klickbare Stacktraces selber erzeugen..? Allgemeine Java-Themen 9
I OpenPDF (ehem. iText) will kein PDF mit CMYK only erzeugen Allgemeine Java-Themen 6
J Runable jar erzeugen Allgemeine Java-Themen 2
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
temi Valides Dreieck erzeugen Allgemeine Java-Themen 6
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
dereki2000 Windows Benachrichtigung erzeugen Allgemeine Java-Themen 2
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
F Objekte erzeugen Allgemeine Java-Themen 1
M Variabe a[i] erzeugen Allgemeine Java-Themen 8
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
Thallius String erzeugen sehr langsam Allgemeine Java-Themen 16
L ICS-Kalenderdatei aus PDF erzeugen Allgemeine Java-Themen 0
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
H Vektor rekursiv erzeugen Allgemeine Java-Themen 2
S Best Practice verschiedene Exceptions fangen und neue Exception erzeugen Allgemeine Java-Themen 11
V 2D-Grafik BufferdImage aus gif Datei in Jar erzeugen geht nicht. Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben