Hab ein Prog. geschrieben das ein Balkendiagramm zeichnet. Jetzt habe ich einen Menu + FileDialog dazu gemacht, damit ich über eine Datei die Werte zum Zeichnen des Diagramms einlesen kann.
Funktioniert alles wunderbar, nur weiss ich nicht wie ich die Daten übergeben soll damit was gezeichnet wird...
Hat jemand zufällig eine Idee wie man das machen kann?
Funktioniert alles wunderbar, nur weiss ich nicht wie ich die Daten übergeben soll damit was gezeichnet wird...
Hat jemand zufällig eine Idee wie man das machen kann?
Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Balkendiagramm2 extends Frame implements ActionListener{
private MenuItem mLesen;
// Diese Werte stehen jetzt in einer Datei und sollen eingelesen werden:
// int[] data = {15, 8, 45, 74, 60, 20, 33};
private void loadFile (String Name){
try{
BufferedReader file = new BufferedReader(new FileReader(Name));
while (file.ready())
//etwas einlesen??????
file.close();
} catch (Exception e){
System.err.println(e);
}
}
public void paint(Graphics g) {
balkendiagrammAnzeigen(data, g);
}
public Balkendiagramm2(String title){
super(title);
setSize(400,300);
setLayout(null);
setVisible(true);
MenuBar mb = new MenuBar();
Menu m = new Menu ("Daten einlesen");
mLesen = new MenuItem ("Öffnen");
m.add(mLesen);
mLesen.addActionListener(this);
mb.add(m);
setMenuBar(mb);
}
private void ShowFileSelectBox (int load_save) {
FileDialog Dir = new FileDialog (this, "Filename?", load_save);
Dir.setDirectory(".");
Dir.show();
String Name = Dir.getFile();
if (Name != null) {
if (load_save == FileDialog.LOAD)
loadFile (Dir.getDirectory() + Name);
else
System.out.println ("Sichern nicht implementiert");
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource () == mLesen)
ShowFileSelectBox (FileDialog.LOAD);
}
public void balkendiagrammAnzeigen(int[] data, Graphics g){
int groessterWert;
int[] skalierteDaten = new int[data.length];
int yAnfang = 50;
int yHoehe = 200;
int xAnfang = 50;
int breite = 30;
int luecke = 10;
groessterWert = sucheGroessterWert(data);
skalierteDaten = skaliereWerte(data,groessterWert,yHoehe);
int x = xAnfang;
g.setColor(Color.red);
for (int zaehler = 0; zaehler < skalierteDaten.length; zaehler++){
g.fillRect(x,yAnfang+yHoehe-skalierteDaten[zaehler],breite,
skalierteDaten[zaehler]);
x=x+breite+luecke;
}
}
private int sucheGroessterWert( int[] data) {
int groessterWert = data[0];
for (int zaehler = 0; zaehler < data.length; zaehler++) {
if (data[zaehler] > groessterWert)
groessterWert = data[zaehler];
}
return groessterWert;
}
private int[] skaliereWerte(int[] data, int groessterWert, int yHoehe) {
int[] newArray = new int[data.length];
for (int zaehler = 0; zaehler < data.length; zaehler++) {
newArray[zaehler] = data[zaehler] * yHoehe / groessterWert;
}
return newArray;
}
public static void main(String[] args){
new Balkendiagramm2("Balkendiagramm mit Daten einlesen");
}
}