Hallo,
Ich wollte ein kleines Übungsprogramm schreiben bei welchem 4 Werte eingelesen werden sollen (x,y,x2,y2) und dann beim klick auf den Button "Zeichnen" sollte eine Linie gezeichnet werden mit den eingegeben Ursprungs- und Endpunkt. Jedoch habe ich das Problem dass,die Werte zwar korrekt eingelesen werden die Linie jedoch nicht gezeichnet wird. Was mache ich falsch?
Ich wollte ein kleines Übungsprogramm schreiben bei welchem 4 Werte eingelesen werden sollen (x,y,x2,y2) und dann beim klick auf den Button "Zeichnen" sollte eine Linie gezeichnet werden mit den eingegeben Ursprungs- und Endpunkt. Jedoch habe ich das Problem dass,die Werte zwar korrekt eingelesen werden die Linie jedoch nicht gezeichnet wird. Was mache ich falsch?
Code:
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Box.Filler;
class Fenster extends JFrame implements ActionListener{
JButton btn_zeichnen;
JTextField txt_x1,txt_x2,txt_y1,txt_y2;
JLabel lbl_x1,lbl_x2,lbl_x3,lbl_x4;
JPanel panel;
MyPanel linie;
int x1,x2,y1,y2;
//Konstrukor
public Fenster(){
setTitle("Test");
setSize(800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel();
btn_zeichnen = new JButton("Zeichnen");
btn_zeichnen.setSize(100,30);
btn_zeichnen.setLocation(300, 50);
btn_zeichnen.addActionListener(this);
txt_x1 = new JTextField();
txt_x1.setLocation(30,30);
txt_x1.setSize(100, 30);
txt_x1.setVisible(true);
txt_x2 = new JTextField();
txt_x2.setLocation(30,80);
txt_x2.setSize(100, 30);
txt_x2.setVisible(true);
txt_y1 = new JTextField();
txt_y1.setLocation(150,30);
txt_y1.setSize(100, 30);
txt_y1.setVisible(true);
txt_y2 = new JTextField();
txt_y2.setLocation(150,80);
txt_y2.setSize(100, 30);
txt_y2.setVisible(true);
setLayout(new GridLayout(2,1));
panel.setLayout(null);
add(panel);
panel.add(btn_zeichnen);
panel.add(txt_x1);
panel.add(txt_x2);
panel.add(txt_y1);
panel.add(txt_y2);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Zeichnen")){
x1 = Integer.valueOf(txt_x1.getText());
y1 = Integer.valueOf(txt_y1.getText());
x2 = Integer.valueOf(txt_x2.getText());
y2 = Integer.valueOf(txt_y2.getText());
linie = new MyPanel(x1, y1, x2, y2);
add(linie);
}
}
}
//Hauptprogramm
public class Frame{
public static void main(String[] args){
Fenster frame = new Fenster();
frame.setVisible(true);
}
}
Code:
package test;
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JPanel {
int x1,y1,x2,y2;
public MyPanel(int x1, int y1, int x2, int y2){
setLayout(null);
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public void paint(Graphics gr){
Graphics2D g = (Graphics2D)gr;
g.setColor(Color.red);
g.drawLine(x1, y1, x2, y2);
}
}