Also ich habe eine benutzerdefinierte Schaltfläche, die gut läuft, keine Fehler. HierWie kann ich meine benutzerdefinierte Komponente entsprechend anpassen?
ist der Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class LukeButton extends JComponent implements MouseListener{
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setTitle("Luke");
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LukeButton lb = new LukeButton();
lb.addActionListener(e->{
System.out.println("Success");
});
frame.add(lb, BorderLayout.CENTER);
frame.setVisible(true);
}
//ArrayList of listeners
private final ArrayList<ActionListener> listeners = new ArrayList<ActionListener>();
public LukeButton(){
this.addMouseListener(this);
}
//Adds a listeners to the list
public void addActionListener(ActionListener e){
listeners.add(e);
}
//Called when button is provoked
public void fireActionListeners(){
if(!listeners.isEmpty()){
ActionEvent evt = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "LukeButton");
for(ActionListener l: listeners){
l.actionPerformed(evt);
}
}
}
//Listens for click on my component
public void mousePressed(MouseEvent e){
fireActionListeners();
}
public Dimension getPreferredSize(){
return new Dimension(100, 100);
}
//Draws my button
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Shape rec = new Rectangle2D.Float(10, 10, 60, 80);
g2.setColor(Color.BLACK);
g2.setStroke(new BasicStroke(5));
g2.draw(rec);
g2.setColor(Color.BLUE);
g2.fill(rec);
}
//Methods that must be over written.
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
}
Hier ist meine Haupt-Problem-, wann immer ich auf eine beliebige Stelle auf dem JFrame, heißt es auf die Schaltfläche geklickt wurde, aber der einzige Teil möchte ich die Aktion Hörer haben auf ist das blaue Rechteck, das ich auf dem JFrame habe. (Sie werden mein Problem verstehen, wenn Sie mein Programm ausführen) Kann jemand das beheben? Vielen Dank, dass Sie sich die Zeit genommen haben, um zu lesen :)
Danke, kannte keine dieser Methoden. Ganz grob habe ich noch ein paar Probleme zu lösen, aber das überlasse ich mir einfach :) –