G
Gast
Gast
Hallo,
ich bin noch relativ neu im Java-Geschehen und habe folgendes Problem. Ich bin dabei ein Programm zu schreiben welches mittels einer API Messwerte ausliest, abspeichert und schlieslich in ein Koordinatensystem zeichnen soll.
Die Messwerte kann ich lesen und auch speichern. Auch ein Koordinatensystem hbae ich malen können nur im zusammenspiel zeigt er mir nichts an. Es tauchen während des ausführens/kompilierens keine Fehler auf und der Debugger läuft wie erwartet durch das Programm. Wenn ich alle Messwerte in der Konsole ausgeben lasse, glückt auch das. Was mache ich also falsch, dass ich keine Ausgabe bekomme?
Mein Programm ist in folgende 3 Dateien gesplittet: Main.java (Fenster, API, Benutzerauswahl), DrawPanel (um in Main ein DrawPanel-Objekt zu erzeugen und auch darauf zu malen) und Values.java (dort werden die Messdaten gespeichert).
DrawPanel.java
Main.java
Natürlich habe ich jetzt - meines erachtens nach überflüssigen - Code weg gelassen.
Vielen Dank für eure Mühe
ich bin noch relativ neu im Java-Geschehen und habe folgendes Problem. Ich bin dabei ein Programm zu schreiben welches mittels einer API Messwerte ausliest, abspeichert und schlieslich in ein Koordinatensystem zeichnen soll.
Die Messwerte kann ich lesen und auch speichern. Auch ein Koordinatensystem hbae ich malen können nur im zusammenspiel zeigt er mir nichts an. Es tauchen während des ausführens/kompilierens keine Fehler auf und der Debugger läuft wie erwartet durch das Programm. Wenn ich alle Messwerte in der Konsole ausgeben lasse, glückt auch das. Was mache ich also falsch, dass ich keine Ausgabe bekomme?
Mein Programm ist in folgende 3 Dateien gesplittet: Main.java (Fenster, API, Benutzerauswahl), DrawPanel (um in Main ein DrawPanel-Objekt zu erzeugen und auch darauf zu malen) und Values.java (dort werden die Messdaten gespeichert).
DrawPanel.java
Code:
imports... [...]
public class DrawPanel extends JPanel {
private static float PAD = 20, SPAD = 3, maxX = 10, maxY = 4;
private static int startTime = 0, endTime = 10;
private float inXa, inXb, inYa, inYb;
private float x1, x2, y1, y2;
private static Graphics g3;
private static Graphics2D g2;
public DrawPanel() {
}
public static Graphics getG() {
return g3;
}
public void drawPoints(float inXa, float inYa, float inXb, float inYb) {
int w = getWidth(), h = getHeight();
float xInc = (float)(w - 2*PAD)/(2*maxX);
float yInc = (float)(h - 2*PAD)/(2*maxY);
Graphics2D g2 = (Graphics2D)g3;
g2.setPaint(Color.red);
g2.draw(new Line2D.Double(inXa*xInc + PAD, PAD + (maxY*2 - inYa)*yInc, inXb*xInc + PAD, PAD + (maxY*2 - inYb)*yInc));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g3 = g;
}
public void paintComponent(float inXa, float inYa, float inXb, float inYb){
this.inXa = inXa;
this.inXb = inXb;
this.inYa = inYa;
this.inYb = inYb;
}
}
Main.java
Code:
import try_02.DrawPanel;
import try_02.Values;
public class Main extends JFrame implements ActionListener, ItemListener, WindowListener {
DrawPanel canvas = new DrawPanel ();
public static void main(String[] args) {
Main mainWindow = new Main ();
}
public Main() {
super(" JAVA-Tool");
setLayout(gridbag);
addComponent(canvas, 1, 3, 5, 1, 25, 100, GridBagConstraints.BOTH,GridBagConstraints.CENTER);
setVisible(true);
}
private void addComponent(Component component, int gridx, int gridy, int gridwidth, int gridheight, int weightx, int weighty, int fill, int anchor) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = gridx;
constraints.gridy = gridy;
constraints.gridwidth = gridwidth;
constraints.gridheight = gridheight;
constraints.weightx = weightx;
constraints.weighty = weighty;
constraints.fill = fill;
constraints.anchor = anchor;
constraints.ipadx = 2;
constraints.ipady = 0;
constraints.insets = new Insets(0, 0, 5, 0);
gridbag.setConstraints(component, constraints);
add(component);
}
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
if( source == field) {
werte werden in values[i] gespeichert, jeder Punkt (X/Y) in eigenen array
i=1;
while (i < try_02.Values.getValueNumber() ) {
canvas.paintComponent(value[i-1].getX(),value[i-1].getY(),value[i].getX(),value[i].getY());
i++;
}
repaint();
}
Natürlich habe ich jetzt - meines erachtens nach überflüssigen - Code weg gelassen.
Vielen Dank für eure Mühe