/* * FigureWindow.java * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.Graphics.*; import java.util.*; public class FigureWindow extends JPanel{ // components of the panel FigurePanel mFigurePanel; JLabel mLabel2; JTextField mTextfield; ButtonGroup mToolsGroup; Box mToolVbox; Vector mToggleButtons; // Constructor public FigureWindow(){ super(new BorderLayout()); // calls the constructor of JPanel with BorderLayout // add components to FigureWindow's container Box box = Box.createHorizontalBox(); mLabel2 = new JLabel("Grootte: "); box.add(mLabel2); mTextfield = new JTextField("10", 5); box.add(mTextfield); add( box, BorderLayout.NORTH); mToolVbox = Box.createVerticalBox(); mToolsGroup = new ButtonGroup(); mToggleButtons = new Vector(); AddTool("Vierkant"); AddTool("Rechthoek"); AddTool("Circel"); AddTool("Driehoek"); AddTool("Vergroot"); AddTool("Verplaats"); AddTool("Verwijder"); AddTool("Groen"); AddTool("Blauw"); AddTool("Zwart"); AddTool("Kleur"); add( mToolVbox, BorderLayout.WEST); mFigurePanel = new FigurePanel(); add(mFigurePanel, BorderLayout.CENTER); } public void AddTool(String tooltext){ JToggleButton b = new JToggleButton(tooltext); mToolVbox.add(b); mToolsGroup.add(b); mToggleButtons.add(b); } // HOOFDPROGRAMMA public static void main( String[] args) { // called at program start JFrame frame = new JFrame("FigureWindow"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when cross at top right is pressed FigureWindow window = new FigureWindow(); frame.setContentPane(window); // figuren toevoegen aan de panel Quadrangle q = new Quadrangle(50, 50, 30); window.mFigurePanel.AddFigure(q); Rectangle r = new Rectangle(150, 100, 50, 30); window.mFigurePanel.AddFigure(r); Circle c = new Circle(50, 80, 30); window.mFigurePanel.AddFigure(c); Triangle t = new Triangle(200, 200, 60); window.mFigurePanel.AddFigure(t); frame.pack(); // berekent grootte vd frame adhv groottes vd componenten (preferred sizes) frame.show(); // should be the last operation } // inner class class FigurePanel extends JPanel { Vector mFigures=new Vector();// vector int mNbrFigures; FigurePanel() { setBackground(Color.white); setPreferredSize( new Dimension(400, 400)); // constructor: Dimension(int width, int height); enableEvents(AWTEvent.MOUSE_EVENT_MASK); // noodzakelijk om processMouseEvent mogelijk te maken } void AddFigure(Figure figure){ mFigures.add(figure); } // overriding the processMouseEvent of JPanel to handle the mouse events public void processMouseEvent(MouseEvent e) { if (e.getID() == MouseEvent.MOUSE_CLICKED) { // get selected figure int fig_selected_index=-1; Figure fig_selected = null; int x = e.getX(); int y = e.getY(); System.out.println("Button " + e.getButton() + " clicked in panel at point (" + x + ", " + y + ")"); for (int i = 0; i < mFigures.size(); i++) { Figure fig = (Figure)mFigures.get(i); if (fig.IsPointInFigure(x,y)){ fig_selected_index=i; fig_selected=fig; } } // get size from textfield int size; String text = mTextfield.getText(); try{ size = Integer.parseInt(text); // omzetten van text naar integer } catch (NumberFormatException exception){ JOptionPane.showMessageDialog(this, "Please give a number!", "Error with size", JOptionPane.ERROR_MESSAGE); return; } // Execute tool for(int i = 0; i < mToggleButtons.size();i++){ JToggleButton b = (JToggleButton)mToggleButtons.get(i); if (b.isSelected()){ if (b.getText() == "Vierkant"){ Quadrangle q = new Quadrangle(x, y, size); AddFigure(q); } else if (b.getText() == "Rechthoek"){ Rectangle r = new Rectangle(x, y, 2*size, size); AddFigure(r); } else if (b.getText() == "Circel"){ Circle c = new Circle(x, y, size); AddFigure(c); } else if (b.getText() == "Driehoek"){ Triangle t = new Triangle(x, y, size); AddFigure(t); } else if (b.getText() == "Vergroot"){ System.out.println("TOOL DOES NOT WORK"); } else if (b.getText() == "Verplaats"){ System.out.println("TOOL DOES NOT WORK"); } else if (b.getText() == "Verwijder"){ if (fig_selected_index != -1) mFigures.remove(fig_selected_index); } else if (b.getText() == "Groen"){ if (fig_selected != null) fig_selected.mColor = Color.GREEN; } else if (b.getText() == "Blauw"){ if (fig_selected != null) fig_selected.mColor = Color.BLUE; }else if (b.getText() == "Zwart"){ if (fig_selected != null) fig_selected.mColor = Color.BLACK; }else if (b.getText() == "Kleur"){ if (fig_selected != null) fig_selected.mColor = JColorChooser.showDialog(this, "Kies een kleur voor de figuur", fig_selected.mColor); } } } repaint(); // om het geheel te hertekenen } } public void paintComponent(Graphics g) { super.paintComponent(g); // to draw background colors etc g.clearRect(0, 0, 400, 400); // clear screen for (int i = 0; i < mFigures.size(); i++) ((Figure)mFigures.get(i)).Draw(g); } } }