Hallo Gemeinschaft,
was ich bisher habe:
und
Nun zum PRoblem, was ich derzeit nicht lösen kann:
Ich möchte wenn der BEnutzer insert im MEnu auswählt, dass im JPanel mitte ein Punkt(kleiner Kreis) an einer beliebigen Stelle, die der BEnutzer mit der Maus auswählt und innerhalb des PAnels mitte, gezeichnet wird. Aber es will bei mir nicht so wirklich gehen. Habe es probiert mit:
Aber das wäre ja auch zu einfach gewesen. HAbt ihr da ein Tip für mich.
was ich bisher habe:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyGraphEditor extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private JMenuBar mb;
private JMenu graph, vertex;
private JMenuItem open, neu, save;
private JMenuItem insert, move, delete, none;
JLabel label = new JLabel("Selected Action");
JTextField text = new JTextField("none", 20);
JPanel mitte = new JPanel();
JPanel unten = new JPanel();
public MyGraphEditor(String s) {
super(s);
// Menu Graph
mb = new JMenuBar();
graph = new JMenu("Graph");
open = new JMenuItem("open");
open.addActionListener(this);
graph.add(open);
neu = new JMenuItem("new");
neu.addActionListener(this);
graph.add(neu);
save = new JMenuItem("save");
save.addActionListener(this);
graph.add(save);
// Menu Vertex
vertex = new JMenu("Vertex");
insert = new JMenuItem("insert");
insert.addActionListener(this);
vertex.add(insert);
delete = new JMenuItem("delete");
delete.addActionListener(this);
vertex.add(delete);
move = new JMenuItem("move");
move.addActionListener(this);
vertex.add(move);
none = new JMenuItem("none");
none.addActionListener(this);
vertex.add(none);
//Inhalte zufügen und ausrichten
mb.add(graph);
mb.add(vertex);
this.setJMenuBar(mb);
mitte.setBackground(Color.white);
unten.setLayout(new FlowLayout());
unten.add(label);
unten.add(text);
add(mitte, BorderLayout.CENTER);
add(unten, BorderLayout.SOUTH);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == open) {
text.setText("Graph:open");
}
else if (e.getSource() == neu) {
text.setText("Graph:new");
}
else if (e.getSource() == save){
text.setText("Graph:save");
}
else if (e.getSource() == insert){
text.setText("Vertex:insert");
}
else if (e.getSource() == delete){
text.setText("Vertex:delete");
}
else if (e.getSource() == move){
text.setText("Vertex:move");
}
else if (e.getSource() == none){
text.setText("none");
}
}
public static void main(String[] args) {
MyGraphEditor frame = new MyGraphEditor("MyGraphEditor");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
frame.setVisible(true);
}
}
und
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class PunktZeichnen extends JPanel implements MouseListener {
/**
*
*/
private static final long serialVersionUID = 5565015365332074583L;
private ArrayList<Punkt> kreise = new ArrayList<Punkt> ();
/* Innere Klasse, um Koordinaten eines Kreises abzulegen */
class Punkt {
private int x, y, dx, dy;
public Punkt(int x, int y, int dx, int dy) {
this.x = x;
this.y = y;
this.dx = dx;
this.dy = dy;
}
}
public PunktZeichnen() {
addMouseListener(this) ;
this.setPreferredSize(new Dimension(320,100));
}
public void mouseClicked(MouseEvent e) {
kreise.add(new Punkt(e.getX(), e.getY(), 10, 10));
repaint();
}
public void mouseEntered(MouseEvent e) {};
public void mouseExited(MouseEvent e) {};
public void mousePressed(MouseEvent e) {};
public void mouseReleased(MouseEvent e) {};
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.black);
for (Punkt k: kreise) {
g.fillOval(k.x - k.dx/2, k.y - k.dx/2, k.dx, k.dy);
}
}
/*public static void main(String[] args) {
JFrame f = new JFrame("Kreise");
f.setSize(500,500);
f.getContentPane().add(new PunktZeichnen());
f.setVisible(true);
}*/
}
Nun zum PRoblem, was ich derzeit nicht lösen kann:
Ich möchte wenn der BEnutzer insert im MEnu auswählt, dass im JPanel mitte ein Punkt(kleiner Kreis) an einer beliebigen Stelle, die der BEnutzer mit der Maus auswählt und innerhalb des PAnels mitte, gezeichnet wird. Aber es will bei mir nicht so wirklich gehen. Habe es probiert mit:
Java:
else if (e.getSource() == insert){
text.setText("Vertex:insert");
mitte.add(new PunktZeichnen());
}
Zuletzt bearbeitet von einem Moderator: