A w którym miejscu powinienem nadpisać tę metodę? Póki co mam całe GUI zrobione za pomocą Visual Editor w Eclipse. Wygląda to mniej więcej tak, że jest klasa GlownaRamka, która dziedziczy z klasy JFrame. W klasie tej tworzone są obiekty np. panel przycisków, czy panel wykreślacza. Np. dla JEditorPane wygląda to tak:
/**
* This method initializes jEditorPane
*
* @return javax.swing.JEditorPane
*/
private JEditorPane getJEditorPane() {
if (jEditorPane == null) {
jEditorPane = new JEditorPane();
jEditorPane.setBounds(new Rectangle(9, 22, 375, 277));
}
return jEditorPane;
}
Wydaje mi się, że w takim przypadku nie da się nadpisać tej metody, bo trzeba by mieć osobną klasę, która dziedziczy po klasie zawierającej metodę paintComponent(Graphics g). Nie wiem czy robię to w dobrym kierunku, ale wymyśliłem coś takiego:
class RysujLinie extends JComponent{
RysujLinie(int x1, int y1, int x2, int y2){
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g;
g2.drawLine(x1, y1, x1, x2);
}
int x1, y1;
int x2, y2;
}
Czyli utworzyłem klasę, która ma przesłoniętą metodę paintComponent, w tym wypadku rysującą linię o zadanych punktach. I teraz jak mam metodę, która obsługuje akcję przycsku:
private JButton getLiniaButton() {
if (LiniaButton == null) {
LiniaButton = new JButton();
LiniaButton.setBounds(new Rectangle(15, 22, 94, 26));
LiniaButton.setText("Linia");
LiniaButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
RysujLinie component = new RysujLinie(20, 20, 50, 50);
//add(component);
jEditorPane.add(component);
}
});
}
return LiniaButton;
}
Czy coś takiego ma szansę zadziałać, czy raczej nie o to w tym chodziło?