Hallo,
ich habe ein Projekt, das mir Polyline-Objekte zeichnet. Wenn ich auf den entsprechenden Button klicke, soll mit einem neuen Polyline-Objekt begonnen werden. Leider bekomme ich das nicht hin. Hat jemand eine Idee?
ich habe ein Projekt, das mir Polyline-Objekte zeichnet. Wenn ich auf den entsprechenden Button klicke, soll mit einem neuen Polyline-Objekt begonnen werden. Leider bekomme ich das nicht hin. Hat jemand eine Idee?
Java:
package zeichnen;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Zeichenprogramm extends JFrame implements MouseListener, ActionListener {
private Zeichenflaeche leinwand;
private ArrayList<Integer> listeX;
private ArrayList<Integer> listeY;
private int[] x, y;
private JButton btnRefresh, btnAddPolygon;
public Zeichenprogramm() {
setTitle("Zeichenprogramm");
btnRefresh = new JButton("Refresh");
btnAddPolygon = new JButton("Weiteres Polygon");
// x = new int[1000];
// y = new int[1000];
listeX = new ArrayList<>();
listeY = new ArrayList<>();
leinwand = new Zeichenflaeche();
leinwand.setPreferredSize(new Dimension(400, 400));
add(leinwand);
add(btnRefresh, BorderLayout.SOUTH);
add(btnAddPolygon, BorderLayout.NORTH);
btnRefresh.addActionListener(this);
btnAddPolygon.addActionListener(this);
leinwand.addMouseListener(this);
int bildschirmHoehe = getToolkit().getScreenSize().height;
int bildschirmBreite = getToolkit().getScreenSize().width;
setLocation(bildschirmBreite / 2 - 300 / 2, bildschirmHoehe / 2 - 300 / 2);
// setBounds(wert, wert, wert, wert);
// orientiert sich an den preferredSize-Angaben
// und zeigt den Bildschirm beim Start entsprechend an
// hat aber keine Auswirkung auf spätere Fenstergrößen-Änderungen
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
// TODO code application logic here
new Zeichenprogramm();
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
listeX.add(e.getX());
listeY.add(e.getY());
repaint();
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnRefresh) {
listeX.clear();
listeY.clear();
}
else if(e.getSource() == btnAddPolygon){
//??
}
repaint();
}
class Zeichenflaeche extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
x = new int[listeX.size()];
y = new int[listeY.size()];
for (int i = 0; i < listeX.size(); i++) {
x[i] = listeX.get(i);
y[i] = listeY.get(i);
}
g.drawPolyline(x, y, listeX.size());
}
}
}
Zuletzt bearbeitet von einem Moderator: