Hallo zusammen,
ich bin neu beim Programmieren und jetzt muss ich mit Java Programmiersprache beschäftigen.
Meine Aufgabe ist eine Programm einer linearen Funktion durch Eingabe von 2 Punkten in eine GUI-Interface zu schreiben.
Dazu habe ich folgende Code geschrieben:
Durch klicken von "Draw"-Button mit einer ActionListener sollte eigentlich eine Grafik gezeichnet in eine neue Panel, wo in der untere Frame Panel liegt.
Aber ich kann diese Grafik nicht zeichnen.
Weisst ihr wo ich falsch gemacht habe?
Für jede Hilfe bin ich sehr dankbar.
Liebe Grüße
ich bin neu beim Programmieren und jetzt muss ich mit Java Programmiersprache beschäftigen.
Meine Aufgabe ist eine Programm einer linearen Funktion durch Eingabe von 2 Punkten in eine GUI-Interface zu schreiben.
Dazu habe ich folgende Code geschrieben:
Code:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
public class LinearApp extends JFrame implements ActionListener {
JPanel graphPanel;
JDesktopPane desktop; //main Panel
JButton drawButton; //Draw Button
JTextField Inputx1, Inputy1, Inputx2, Inputy2; //Eingabe Coordinat
JLabel labelx1, labely1, labelx2, labely2, labelp1, labelp2; //Label
int x1, y1, x2, y2;
public LinearApp() {
super("Linear Funktion");
drawButton = new JButton("Draw");
drawButton.setBounds(500, 30, 100, 40);
this.getContentPane().add(drawButton);
drawButton.addActionListener(this);
Inputx1 = new JTextField(10);
Inputx1.setBounds(100, 20, 40, 20);
this.getContentPane().add(Inputx1);
labelx1 = new JLabel("x1");
labelx1.setBounds(80, 20, 20, 20);
add(labelx1);
Inputy1 = new JTextField(10);
Inputy1.setBounds(100, 60, 40, 20);
this.getContentPane().add(Inputy1);
labely1 = new JLabel("y1");
labely1.setBounds(80, 60, 20, 20);
add(labely1);
Inputx2 = new JTextField(10);
Inputx2.setBounds(300, 20, 40, 20);
this.getContentPane().add(Inputx2);
labelx2 = new JLabel("x2");
labelx2.setBounds(280, 20, 20, 20);
add(labelx2);
Inputy2 = new JTextField(10);
Inputy2.setBounds(300, 60, 40, 20);
this.getContentPane().add(Inputy2);
labely2 = new JLabel("y2");
labely2.setBounds(280, 60, 20, 20);
add(labely2);
labelp1 = new JLabel("P1");
labelp1.setBounds(50, 40, 20, 20);
add(labelp1);
labelp2 = new JLabel("P2");
labelp2.setBounds(250, 40, 20, 20);
add(labelp2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
graphPanel = new JPanel();
MyDraw oDraw = new MyDraw();
graphPanel.add(oDraw);
graphPanel.setBorder(BorderFactory.createEtchedBorder());
getContentPane().add(graphPanel, BorderLayout.CENTER);
getContentPane().setLayout(new BorderLayout());
this.pack();
}
public void actionPerformed(ActionEvent e) {
graphPanel.setVisible(true);
graphPanel.add(new MyDraw());
graphPanel.validate();
graphPanel.repaint();
}
public static void main(String[] args) {
LinearApp lin = new LinearApp();
lin.setSize(800, 600);
lin.setVisible(true);
}
public class MyDraw extends JPanel {
public MyDraw() {
this.setPreferredSize(new Dimension(320, 100));
this.setBorder(BorderFactory.createLoweredBevelBorder());
this.setVisible(true);
}
@Override
public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
AffineTransform transformer = new AffineTransform(1, 0, 0, -1, 0, getHeight());
transformer.translate(this.getWidth()/2,this.getHeight()/2);
x1 = (int) Double.parseDouble(Inputx1.getText());
y1 = (int) Double.parseDouble(Inputy1.getText());
x2 = (int) Double.parseDouble(Inputx2.getText());
y2 = (int) Double.parseDouble(Inputy2.getText());
g2d.setTransform(transformer);
g2d.drawLine(x1, y1, x2, y2);
}
}
}
Durch klicken von "Draw"-Button mit einer ActionListener sollte eigentlich eine Grafik gezeichnet in eine neue Panel, wo in der untere Frame Panel liegt.
Aber ich kann diese Grafik nicht zeichnen.
Weisst ihr wo ich falsch gemacht habe?
Für jede Hilfe bin ich sehr dankbar.
Liebe Grüße