K
Kerberus
Gast
Ich habe meine eigene Vektorklasse erstellt und eine Klasse, die die Vektoren darstellen soll, sowie deren Addition.
Wenn ich alles drei Klassen kompiliere, kann ich zwar das Programm laufen lassen, doch geht der Button nicht. Das heisst, wenn ich ihn drücke werden nicht die neuen Vektoren gezeichnet, sondern es wird ein Fehler zurückgeliefert.
Hier die drei Klassen, damit man mein Problem auch versteht:
Ich danke schon einmal jenen, die versuchen, mein Problem zu lösen. Danke!
Kerberus
Wenn ich alles drei Klassen kompiliere, kann ich zwar das Programm laufen lassen, doch geht der Button nicht. Das heisst, wenn ich ihn drücke werden nicht die neuen Vektoren gezeichnet, sondern es wird ein Fehler zurückgeliefert.
Hier die drei Klassen, damit man mein Problem auch versteht:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ShowVector extends JFrame implements ActionListener
{
int global_x_1 = 10;
int global_y_1 = 10;
int global_x_2 = -10;
int global_y_2 = 50;
JTextField x_1;
JTextField y_1;
JTextField x_2;
JTextField y_2;
KOSY kosy;
public ShowVector(String title)
{
super(title);
setSize(600,450);
JButton button = new JButton("Zeichnen");
button.addActionListener(this);
JPanel links = new JPanel();
JPanel rechts = new JPanel();
getContentPane().setLayout(new FlowLayout());
kosy = new KOSY(global_x_1,global_y_1,global_x_2,global_y_2);
links.add(kosy);
Rechtes Panel bestimmen!
rechts.setLayout(new GridLayout(5,1,5,5));
x_1 = new JTextField(5);
rechts.add(x_1);
y_1 = new JTextField(5);
rechts.add(y_1);
x_2 = new JTextField(5);
rechts.add(x_2);
y_2 = new JTextField(5);
rechts.add(y_2);
rechts.add(button);
getContentPane().add(links);
getContentPane().add(rechts);
}
public void actionPerformed(ActionEvent e)
{
global_x_1 = Integer.parseInt(x_1.getText());
global_y_1 = Integer.parseInt(y_1.getText());
global_x_2 = Integer.parseInt(x_2.getText());
global_y_2 = Integer.parseInt(y_2.getText());
kosy.repaint();
}
public static void main(String[] args)
{
ShowVector show_vector = new ShowVector("Koordinaten-System");
show_vector.show();
}
}
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class KOSY extends JPanel
{
int intern_x_1;
int intern_y_1;
int intern_x_2;
int intern_y_2;
public KOSY(int x_1, int y_1, int x_2, int y_2)
{
intern_x_1 = x_1;
intern_y_1 = y_1;
intern_x_2 = x_2;
intern_y_2 = y_2;
}
public void paintComponent(Graphics comp)
{
Graphics2D comp2D = (Graphics2D) comp;
comp2D.drawRect(0,0,400,400);
comp2D.translate(200,200);
comp2D.drawLine(0,-200,0,200);
comp2D.drawLine(-200,0,200,0);
comp2D.setColor(new Color(255,0,0));
vector_normal a = new vector_normal(intern_x_1,intern_y_1);
a.drawVector(comp);
vector_normal b = new vector_normal(intern_x_2,intern_y_2);
b.drawVector(comp);
comp2D.setColor(new Color(0,255,0));
vector_normal v = new vector_normal(0,0);
v = a.add_vector(b);
v.drawVector(comp);
}
public Dimension getMinimumSize()
{
return new Dimension(401,401);
}
public Dimension getPreferredSize()
{
return getMinimumSize();
}
}
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class vector_normal
{
int intern_x;
int intern_y;
public vector_normal(int x, int y)
{
intern_x = x;
intern_y = y;
}
public int getX()
{
return intern_x;
}
public int getY()
{
return intern_y;
}
public void drawVector(Graphics comp)
{
Graphics2D comp2D = (Graphics2D) comp;
int minus_intern_y = (-1)*intern_y;
comp2D.drawLine(0,0,intern_x,minus_intern_y);
}
public vector_normal add_vector(vector_normal v)
{
int param_x_1 = v.getX();
int param_y_1 = v.getY();
int new_vector_x = param_x_1 + intern_x;
int new_vector_y = param_y_1 + intern_y;
vector_normal vector_v = new vector_normal(new_vector_x, new_vector_y);
return vector_v;
}
}
Ich danke schon einmal jenen, die versuchen, mein Problem zu lösen. Danke!
Kerberus