Hi möchte ein Programm schreiben in dem mann x und y Werte eingibt und an diesen stellen dann ein Kreis gemalt wird, leider steht im ganzen ArrayList die letzte hinzugefügte Zahl ???:L
Frame.java
Tafel.java
Frame.java
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package drawpoints;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
/**
*
* @author Franz
*/
public class Frame extends JFrame {
private JMenuBar menu = new JMenuBar();
private JMenu datei = new JMenu("datei");
private JMenuItem clear = new JMenuItem("clear");
private JMenuItem exit = new JMenuItem("exit");
private Tafel tafel;
private JButton ok = new JButton("ok");
private JTextField x = new JTextField(30);
private JTextField y = new JTextField(30);
private Point p = new Point();
public static void main(String[] args)
{
new Frame();
}
public Frame()
{
super("Hallo");
init();
}
public void init()
{
this.setVisible(true);
this.setBounds(0,0, 1370, 730);
this.setJMenuBar(menu);
menu.add(datei);
datei.add(clear);
datei.add(exit);
tafel = new Tafel();
Panel ausgabe = new Panel();
ausgabe.setLayout(new BorderLayout());
ausgabe.add(tafel,BorderLayout.CENTER);
// tafel.setLayout(new BorderLayout());
Panel eingabe = new Panel();
eingabe.setLayout(new GridLayout(3,1));
eingabe.add(x);
eingabe.add(y);
eingabe.add(ok);
this.setLayout(new GridLayout(1,2));
// add(tafel, BorderLayout.CENTER);
add(ausgabe);
add(eingabe);
pack();
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
ok.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
p.x=Integer.parseInt(x.getText());
p.y=Integer.parseInt(y.getText());
if(p.x!=0 && p.y!=0)
{
tafel.addPoint(p);
System.out.println("Punkt ausgeben in Button _____" + p);
}
}
});
}
}
Tafel.java
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package drawpoints;
import java.awt.Graphics;
import java.awt.Point;
import java.util.ArrayList;
import javax.swing.JPanel;
/**
*
* @author Franz
*/
public class Tafel extends JPanel {
private ArrayList<Point> plist = new ArrayList<>();
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
System.out.println("Punkte werden neu gezeichnet Anzahl " + plist.size());
for(int i=0; i<plist.size(); i++)
{
g.drawOval(plist.get(i).x, plist.get(i).x, 30, 30);
System.out.println("Punkt " + i + plist.get(i) );
}
}
public void addPoint(Point p)
{
plist.add(p);
repaint();
}
}
Zuletzt bearbeitet von einem Moderator: