Hi,
habe hier so ne art toolkit mit dem ich mir elemente für ne gui zusammenbasteln kann, normalerweise macht man sich ein hauptelement und added komponenten dazu und lässt es dann vom view zeichnen.
klappt soweit ganz prima:
also z.B. man macht dann den view mit extends JButton und der zeichnet dann alles was man vorher im element angelegt hat, aben als Button:
bei dem createView kann ich nen MouseListener aber keinen ActionListener hinzufügen !
so weit so gut, mein problem ist dass ich nun den actionListener nirgends hinzufügen kann um die events abzufangen.
lege ich mir z.B. ein rechtsklickmenü im Element an:
so habe ich ja mit item.addActionListener(this); den ActionListener hinzugefügt und mein knopf hat dann ein rechtsklick event mit nem menü item und nem button und die lösen was aus.
Wo füge ich aber den ActionListener dem Elemet hinzu wenn es ja dann extends JButton heißt ?
damit ja mein Element JButton ja ein event kriegt.
das:
funktioniert ja auch aber mit dem kann ich ja nicht das actionPerformed auslösen.
oder muß ich den mouseveent in nen actionevent wandeln ?
habe es schon mit this etc. versucht, klappt alles aber irgendwie nicht.
PLZ HELP !
THANX
habe hier so ne art toolkit mit dem ich mir elemente für ne gui zusammenbasteln kann, normalerweise macht man sich ein hauptelement und added komponenten dazu und lässt es dann vom view zeichnen.
klappt soweit ganz prima:
also z.B. man macht dann den view mit extends JButton und der zeichnet dann alles was man vorher im element angelegt hat, aben als Button:
Code:
class Button$View extends JButton
{
final static long serialVersionUID = 1;
final private Utils utils;
final private DisplayState source;
final private Point point;
final private Dimension size;
final private String tooltip;
final private boolean hasState;
private ActionListener listener;
Button$View(Utils utils, Button$Element source, Point point, Dimension size, String tooltip, boolean hasState, Font font, int horizontalAlignment, int verticalAlignment)
{
this.utils = utils;
this.source = source;
this.point = point;
this.size = size;
this.tooltip = tooltip;
this.hasState = hasState;
setBounds(point.x,point.y, size.width,size.height);
setFont(font);
setBackground(source.getColor());
setBorder(BorderFactory.createEtchedBorder());
setBorder(BorderFactory.createRaisedBevelBorder());
setHorizontalAlignment(horizontalAlignment);
setVerticalAlignment(verticalAlignment);
}
public boolean isOptimizedDrawingEnabled()
{
return(false);
}
public boolean isOpaque()
{
return(true);
}
public void paintComponent(Graphics g)
{
setText(source.toString());
super.paintComponent(g);
}
}
class Button$Element extends MouseAdapter implements DisplayElement, ActionListener {
.....
public JComponent createView()
{
JComponent view = new Button$View(utils, this, getOrigin(), size, tooltip, hasState, font, horizontalAlignment, verticalAlignment);
view.addMouseListener(this);
return(view);
}
so weit so gut, mein problem ist dass ich nun den actionListener nirgends hinzufügen kann um die events abzufangen.
lege ich mir z.B. ein rechtsklickmenü im Element an:
Code:
MyAction action = new MyAction(lbl, e.getAttribute("action"),e.getAttribute("arg.cmd"));
actionmap.put(lbl, action);
JMenuItem item = new JMenuItem(lbl);
item.addActionListener(this);
popup.add(item);
JButton btn = new JButton();
btn.addActionListener(this);
popup.add(btn);
so habe ich ja mit item.addActionListener(this); den ActionListener hinzugefügt und mein knopf hat dann ein rechtsklick event mit nem menü item und nem button und die lösen was aus.
Wo füge ich aber den ActionListener dem Elemet hinzu wenn es ja dann extends JButton heißt ?
damit ja mein Element JButton ja ein event kriegt.
das:
Code:
public void mousePressed(MouseEvent e)
{
if (e.isPopupTrigger())
popup.show(e.getComponent(), e.getX(), e.getY());
}
oder muß ich den mouseveent in nen actionevent wandeln ?
habe es schon mit this etc. versucht, klappt alles aber irgendwie nicht.
PLZ HELP !
THANX
Zuletzt bearbeitet: