Dynamisches Erzeugen eines Button

Status
Nicht offen für weitere Antworten.

Lemieux

Mitglied
Hallo!
Ich will, dass wenn ich einen ComponentButton (Klasse: ComponentButton extends JComponent; befindet sich auf PanelMain) auf meiner GUI anklicke, auf einem anderen Panel (Klasse: PanelCommand extends JPanel) f�r jedes Command ein oder mehrere CommandButton(s) (Klasse: CommandButton extends JComponent) erstellt und angezeigt werden.

Habe bereits ne Weile herumprobiert, finde aber keine L�sung wie ich das machen k�nnte :(

Klasse ComponentButton
Code:
public void mouseClicked(MouseEvent arg0)
    {
        System.out.println("Klick");
        _oJComponent.setBorder(new EtchedBorder(Color.blue, Color.blue));
        if(LCMC.isLoggedIn() == true)
        {            
            Vector vObjCmds = _oMMCObj.getCmd();
            
            System.out.println("\nM�gliche Befehle f�r dieses Objekt: ");
            for(int i=0; i < vObjCmds.size(); i++)
            {
                vObjCmds.get(i);
                System.out.print(vObjCmds.get(i) + " ");
                PanelCommand.setObjCmd((CmdDesc)vObjCmds.get(i));
                PanelCommand.getpCmd().createCmdButton();
            }
            System.out.println("\n");
        }
        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);
        }
    }

Klasse PanelCommand
Code:
package lcmc.gui;

import java.awt.*;
import java.util.Vector;

import javax.swing.*;

import com.v8tech.mmc.j2melib.CmdDesc;

public class PanelCommand extends JPanel
{
    private Image               iBackground;
    private static CmdDesc      _oObjCmd;
    private GUI                 _mainFrame;
    private static PanelCommand _pCmd;

    public PanelCommand(GUI mainFrame, JPanel pWest)
    {
        iBackground = mainFrame.loadImage("command");
        
        setMainFrame(mainFrame);
        
        FlowLayout loCommandLayout = new FlowLayout();
        loCommandLayout.setVgap(15);
        loCommandLayout.setHgap(40);
        this.setLayout(loCommandLayout);        
        
        JLabel lNullLabel = new JLabel();
        this.add(lNullLabel);
        lNullLabel.setPreferredSize(new java.awt.Dimension(220, 20));

        this.setPreferredSize(new java.awt.Dimension(268, 464));
        
        pWest.add(this);
    }
    
    public void createCmdButton()
    {
        System.out.println("Test");
        this.add(new CommandButton(_mainFrame, _oObjCmd.toString()));
    }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        if (iBackground != null)
        {
            g.drawImage(iBackground, 0, 0, null);
        }
    }
    
    public static void setObjCmd(CmdDesc oObjCmd)
    {
        _oObjCmd = oObjCmd;
    }

    public void setMainFrame(GUI mainFrame)
    {
        this._mainFrame = mainFrame;
    }
    
    public static PanelCommand getpCmd()
    {
        return _pCmd;
    }
}


In der Konsole bekomme ich immer folgenden Text und Exception
Klick

Mögliche Befehle für dieses Objekt:

OFF {} Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at lcmc.gui.ComponentButton.mouseClicked(ComponentButton.java:124)
at java.awt.Component.processMouseEvent(Component.java:5491)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3901)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


Wäre über jede Hilfe dankbar! :)


mfg,
Lemieux
 

Lemieux

Mitglied
Hat sich erledigt, habe den MouseClicked-Teil großteils in den Konstruktor der PanelCommand Klasse geschrieben, jetzt gehts!
 

André Uhres

Top Contributor
Lemieux hat gesagt.:
..habe den MouseClicked-Teil großteils in den Konstruktor der PanelCommand Klasse geschrieben..
:? ???:L
Code:
package basics;
/*
 * GUI.java
 */
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
public class GUI extends JFrame{
    private ComponentButton bt;
    private PanelCommand pn;
    private JPanel pWest;
    public GUI() {
        super("GUI");
        setSize(400,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        bt = new ComponentButton(this, "Test");
        pWest = new JPanel();
        pn = new PanelCommand(this, pWest);
        add(bt, BorderLayout.NORTH);
        add(pWest, BorderLayout.WEST);
    }
    public PanelCommand getPn() {return pn;}
    public Image loadImage(final String string) {return null;}
    public static void main(final String[] args) {new GUI().setVisible(true);}
}
class ComponentButton extends JComponent implements MouseListener{
    private JLabel _oJComponent = new JLabel("TEST");
    private LCMC _oMMCObj = new LCMC();
    private GUI mainFrame;
    public ComponentButton(final GUI mainFrame, final String sName) {
        this.mainFrame = mainFrame;
        setName(sName);
        setLayout(new FlowLayout());
        add(_oJComponent);
        addMouseListener(this);
    }
    public void mouseClicked(final MouseEvent arg0) {
        System.out.println("Klick");
        _oJComponent.setBorder(new EtchedBorder(Color.blue, Color.blue));
        if(LCMC.isLoggedIn() == true) {
            Vector vObjCmds = _oMMCObj.getCmd();
            System.out.println("\nMögliche Befehle für dieses Objekt: ");
            for(int i=0; i < vObjCmds.size(); i++) {
                vObjCmds.get(i);
                System.out.print(vObjCmds.get(i) + " ");
                mainFrame.getPn().setObjCmd((CmdDesc)vObjCmds.get(i));
                mainFrame.getPn().createCmdButton();
            }
            System.out.println("\n");
        }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 mousePressed(final MouseEvent e) {}
    public void mouseReleased(final MouseEvent e) {}
    public void mouseEntered(final MouseEvent e) {}
    public void mouseExited(final MouseEvent e) {}
}
class PanelCommand extends JPanel {
    private Image iBackground;
    private CmdDesc _oObjCmd;
    private GUI _mainFrame;
    public PanelCommand(final GUI mainFrame, final JPanel pWest) {
        iBackground = mainFrame.loadImage("command");
        setMainFrame(mainFrame);
        FlowLayout loCommandLayout = new FlowLayout();
        loCommandLayout.setVgap(15);
        loCommandLayout.setHgap(40);
        this.setLayout(loCommandLayout);
        JLabel lNullLabel = new JLabel();
        this.add(lNullLabel);
        lNullLabel.setPreferredSize(new Dimension(220, 20));
        this.setPreferredSize(new Dimension(268, 464));
        pWest.add(this);
    }
    public void createCmdButton() {
        System.out.println("Test");
        this.add(new CommandButton(_mainFrame, _oObjCmd.toString()));
    }
    public void setObjCmd(final CmdDesc oObjCmd) {_oObjCmd = oObjCmd;}
    public void setMainFrame(final GUI mainFrame) {this._mainFrame = mainFrame;}
}
class LCMC {
    private Vector<CmdDesc> v = new Vector<CmdDesc>();
    public LCMC(){
        v.add(new CmdDesc("print"));
        v.add(new CmdDesc("show"));
    }
    public static boolean isLoggedIn() {return true;}
    public Vector getCmd() {return v;}
}
class CmdDesc{
    private String cmd;
    public CmdDesc(final String cmd){this.cmd = cmd;}
    public String toString() {return cmd;}
}
class CommandButton extends JComponent{
    public CommandButton(final GUI gui, final String str){}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
D Swing Dynamisches Dialog UI AWT, Swing, JavaFX & SWT 8
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
T dynamisches Koordinatenkreuz mit scalierung AWT, Swing, JavaFX & SWT 7
C Scollpane an dynamisches GridLayout anpassen? AWT, Swing, JavaFX & SWT 3
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
trash Dynamisches Interface AWT, Swing, JavaFX & SWT 6
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3
T Swing Dynamisches Bild AWT, Swing, JavaFX & SWT 8
T RCP-SWT dynamisches ScrolledComposite AWT, Swing, JavaFX & SWT 2
B dynamisches Spektrogramm in Java-Webanwendung AWT, Swing, JavaFX & SWT 3
G LookAndFeel Dynamisches Einlesen von LookAndFeels - NullPointerException AWT, Swing, JavaFX & SWT 4
M Dynamisches generieren und ausrichten von Komponenten AWT, Swing, JavaFX & SWT 11
T Dynamisches hinzufügen und entfernen von Bildern AWT, Swing, JavaFX & SWT 3
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
S GUI, dynamisches Wechseln von JPanels in einem JFrame AWT, Swing, JavaFX & SWT 2
M Schwieriges Label - Font - Problem "Dynamisches Label&a AWT, Swing, JavaFX & SWT 7
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
I TIFF im CMYK-Farbmodell + mit dpi-Auflösung im Header erzeugen - wie? AWT, Swing, JavaFX & SWT 0
Monokuma Blöcke erzeugen (JavaFX) AWT, Swing, JavaFX & SWT 1
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
I Schöne Heatmap erzeugen AWT, Swing, JavaFX & SWT 10
K Color-Objekt erzeugen in CMYK AWT, Swing, JavaFX & SWT 2
MaxG. Swing Dynamisch grafische Objekte erzeugen AWT, Swing, JavaFX & SWT 12
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
B JavaFX Wie Treeview aus xml erzeugen AWT, Swing, JavaFX & SWT 11
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
K JavaFX Erzeugen dynamischer Layouts in fxml AWT, Swing, JavaFX & SWT 3
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
B Knoten, Kanten erzeugen AWT, Swing, JavaFX & SWT 4
H Quadrate dnamisch erzeugen und beliebig füllen AWT, Swing, JavaFX & SWT 7
P TableViewerColumn dynamisch erzeugen AWT, Swing, JavaFX & SWT 3
H Swing Button Klick soll "Untermenü-Buttons" erzeugen AWT, Swing, JavaFX & SWT 2
B Kontrast in einem Bild erzeugen AWT, Swing, JavaFX & SWT 37
J Halb-modales Fenster erzeugen AWT, Swing, JavaFX & SWT 5
A Panels in JavaFX zur Laufzeit erzeugen AWT, Swing, JavaFX & SWT 5
C SWT - widget dynamisch erzeugen und anzeigen AWT, Swing, JavaFX & SWT 10
M jTable - Größe beim Erzeugen AWT, Swing, JavaFX & SWT 4
B eine .jar erzeugen AWT, Swing, JavaFX & SWT 4
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
S Bild fläche erzeugen AWT, Swing, JavaFX & SWT 10
G Große dynamische ContextMenus erzeugen (Eclipse RCP) AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
T Leerraum im Jframe erzeugen AWT, Swing, JavaFX & SWT 3
E Profilsichten speichern und dynamsich erzeugen?! AWT, Swing, JavaFX & SWT 2
G Mit Java einen Button wie z.B. im Opera 10.63 erzeugen AWT, Swing, JavaFX & SWT 3
R Möglichkeiten ein abgeleitetes Objekt zu erzeugen AWT, Swing, JavaFX & SWT 4
A Swing Dynamisch Objekte erzeugen AWT, Swing, JavaFX & SWT 3
M Jframe wie bekommt man bei den zeile einen header erzeugen AWT, Swing, JavaFX & SWT 2
X Swing Neues Fenster erzeugen AWT, Swing, JavaFX & SWT 3
E AWT RenderedImage aus BufferedImage erzeugen, um Bild abzuspeichern? AWT, Swing, JavaFX & SWT 4
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
M Swing Zweidimensionales Array mit Farben erzeugen AWT, Swing, JavaFX & SWT 16
H Swing Trennlinie wie bei Menüleiste erzeugen AWT, Swing, JavaFX & SWT 2
Semox Swing JFrame extern erzeugen und in anderes JFrame einbetten AWT, Swing, JavaFX & SWT 7
D Dynamischen JTree aus Hyperlinks bzw. Anker erzeugen AWT, Swing, JavaFX & SWT 8
G ActionEvents selbst erzeugen AWT, Swing, JavaFX & SWT 7
R JLabel und JSlider dynamisch erzeugen? AWT, Swing, JavaFX & SWT 3
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
I Swing JTree aus ArrayList<File> erzeugen AWT, Swing, JavaFX & SWT 15
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
J Swing Selbstschliessende Nachrichtenfenster erzeugen AWT, Swing, JavaFX & SWT 8
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
B Wie kann ich Greyscale Bilder aus ushort binary files erzeugen? AWT, Swing, JavaFX & SWT 8
multiholle Swing TransferHandler mit DataFlavor erzeugen AWT, Swing, JavaFX & SWT 2
H Swing jpanel in jframe erzeugen und anzeigen AWT, Swing, JavaFX & SWT 5
freakysheep mit jtree config file erzeugen AWT, Swing, JavaFX & SWT 2
E Komponenten in Event Dispatch Thread erzeugen? AWT, Swing, JavaFX & SWT 4
S JTable Daten bearbeiten und Grauwertbild erzeugen! AWT, Swing, JavaFX & SWT 4
S Nachträglich Swing-Elemente in JFrame erzeugen AWT, Swing, JavaFX & SWT 18
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
M Erzeugen von Komponenten während der Laufzeit AWT, Swing, JavaFX & SWT 6
G Felder dynamisch erzeugen! AWT, Swing, JavaFX & SWT 3
I Textfields dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
J JFrame in Fenstermitte erzeugen AWT, Swing, JavaFX & SWT 16
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
A Grafik aus MIME-kodiertem Inhalt erzeugen AWT, Swing, JavaFX & SWT 2
G Datei-Browser - Wie solche Ansicht erzeugen? AWT, Swing, JavaFX & SWT 3
R Nicht rechteckige Komponenten erzeugen? AWT, Swing, JavaFX & SWT 7
K Erzeugen eines Jar-Files AWT, Swing, JavaFX & SWT 5
vogella Erzeugen der Hauptsicht (JFrame) AWT, Swing, JavaFX & SWT 2
M Aus Swing Oberfläche Bild erzeugen AWT, Swing, JavaFX & SWT 39
M Abstrakte Graphics Klasse erzeugen AWT, Swing, JavaFX & SWT 2
F Komponente dynamisch erzeugen AWT, Swing, JavaFX & SWT 4
J Eigene Fehlermeldung in AWT erzeugen AWT, Swing, JavaFX & SWT 2
J Thread erzeugen AWT, Swing, JavaFX & SWT 9
M dynamischen JTree erzeugen AWT, Swing, JavaFX & SWT 4
S In einem button Panel 2 verschiedene TiteledBoarder erzeugen AWT, Swing, JavaFX & SWT 5
M ImageObserver, Bild dynamisch erzeugen und Speichern AWT, Swing, JavaFX & SWT 24
L Tabelle mit 5 spalten und 2 Zeilen erzeugen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben