Witam. Mam taki oto problem. Tworzę program który ma rysować figury. Zaimplementowałem pakiet klas które obsługują każdą figurę, dam tu przykładową do obsługi ELIPSY, oto kod:
package klasyFigur;
import java.awt.;
import java.awt.geom.;
/** ------------------------------------------------------------------------- */
public class Elipsa
{
public Elipsa()
{
elipsa = new Ellipse2D.Double(400,400,130,250);
kolor = new Color(69,139,116);
}
public void malujElipse(Graphics2D g2)
{
g2.setPaint(kolor);
g2.fill(elipsa);
}
private Ellipse2D.Double elipsa;
private Color kolor;
}
Teraz załączam główny plik programu z funkcją main i zaraz napiszę z czym mam problem.
package mainWindow;
import menuBars.MenuBar;
import menuBars.MenuElem;
import menuBars.MenuRozw;
import klasyFigur.*;
import java.awt.;
import java.awt.event.;
import java.awt.geom.;
import javax.swing.;
/** @Author Mateusz Bednarz */
public class Figury
{
public static void main(String[] args)
{
MainWindow okno = new MainWindow();
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.show();
}
}
//------------------------------------------------------------------------------
class MainWindow extends JFrame
{
public MainWindow()
{
setTitle("Program do rysowania figur");
setSize(600,750);
//setResizable(false);
ImageIcon ikona = new ImageIcon("src/ico.png");
Image ico = ikona.getImage();
setIconImage(ico);
}
private MenuBar pasekMenu;
private MenuRozw figura, menuPlik, menuTrans;
private MenuElem linia, prostokat, kolo, elipsa, zakoncz, polaczFig,
klonujFig, usunFig;
{
// dołączamy do głównego okna programu pasek menu
pasekMenu = new MenuBar();
// menu 'Plik'
menuPlik = new MenuRozw("Plik");
pasekMenu.add(menuPlik);
zakoncz = new MenuElem("Zakończ");
menuPlik.add(zakoncz);
zakoncz.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent zdarzenie)
{
System.exit(0);
}
});
// menu 'Wybór figury'
figura = new MenuRozw("Wybór figury");
pasekMenu.add(figura);
linia = new MenuElem("Odcinek");
figura.add(linia);
prostokat = new MenuElem("Prostokąt");
figura.add(prostokat);
kolo = new MenuElem("Koło");
figura.add(kolo);
elipsa = new MenuElem("Elipsa");
figura.add(elipsa);
// menu 'Transformacje'
menuTrans = new MenuRozw("Narzędzia");
pasekMenu.add(menuTrans);
polaczFig = new MenuElem("Połącz figury");
menuTrans.add(polaczFig);
klonujFig = new MenuElem("Klonuj figurę");
menuTrans.add(klonujFig);
usunFig = new MenuElem("Usuń figurę");
menuTrans.add(usunFig);
setJMenuBar(pasekMenu);
// dołączamy panel do okna głównego programu
PanelRysunku panel = new PanelRysunku();
Container powZawartosci = getContentPane();
powZawartosci.add(panel);
}
}
/** Panel wyświetlający figury geometryczne */
class PanelRysunku extends JPanel
{
public PanelRysunku()
{
setBackground(new Color(255,255,255));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
}
}
Chodzi mi o to. Jak teraz zaimplementować w tym kodzie metodę i słuchacza zdarzeń który będzie mi rysował elipsę po kliknięciu na przycisk 'Elipsa'. Mam mniej więcej pojęcie o ActionListener'ach, ale próbowałem to zrobić na milion sposobów i mi nie wychodzi. Będę bardzo wdzięczny za wszelką pomoc.
Pozdro</span>