Hallo,
meine Aufgabe ist es ein Kuchendiagramm zu zeichnen, dem ich per TextFeld werte uebergebe, die dann unterschiedlich gefaerbt im Diagramm erscheinen.
exakte Aufgabenstellung siehe: http://www.animanet.net/ss05.pdf
Bisher habe ich:
1. Eine klasse in der das Diagramm gezeichnet wird. (abgeleitet von JPanel) <- DPanel.java
2. Eine klasse in der das Textfeld und Labels zu finden sind. (abgeleitet von JPanel) <- FPanel.java
3. Eine klasse in der der "Erstellen" und "Beenden" button drin sind. (abgeleitet von JPanel) <- BPanel.java
4. Eine klasse, die den ActionListener implemetiert <-Wache.java
5. Eine klasse SimpleFrame (abgeleitet von JFrame) <-SimpleFrame.java
6. Eine klasse KFrame (abgeleitet von SimpleFrame) zum einfuegen der oben genannten Klassen <-KFrame.java
7. Eine klasse Farbschema zumfestlegen der Farben des Diagramms <-Farbschema.java
mein Problem:
So wie ich das sehe muesste man in der Klasse Wache (in actionPerformed) die methode
paintComponent aufrufen und ihr werte fuer
fillArc(x-wert ,y-wert, breite, hoehe, anfangswinkel, endewinkel) <- die die einzelnen farbigen kreissegmente zeichnen uebergeben.
bzw muesste fillArc fuer jedes Kreissegment erneut aufgerufen werden.
Ich habe keinen plan wie das gehen soll?, meine bisherigen Versuche scheiterten klaeglich.
Hoffe mir kann jemand die Herangehensweise erklaeren, oder mir anhand eines Funktionierenden Beispiels zeigen wies geht. (Das wird leider bald abgeprueft).
Hier der Quelltext der einzelnen Klassen:
Danke schon mal an alle,die sich die Muehe gemacht haben bis heirher zu lesen
1. DPanel.java
2. FPanel.java
3. BPanel.java
4. Wache.java
5. SimpleFrame.java
6. KFrame.java
7. Farbschema.java
8. Test.java <- die Testklasse (zum testen des ganzen)
Respekt an alle,die bis hierher gelesen haben
meine Aufgabe ist es ein Kuchendiagramm zu zeichnen, dem ich per TextFeld werte uebergebe, die dann unterschiedlich gefaerbt im Diagramm erscheinen.
exakte Aufgabenstellung siehe: http://www.animanet.net/ss05.pdf
Bisher habe ich:
1. Eine klasse in der das Diagramm gezeichnet wird. (abgeleitet von JPanel) <- DPanel.java
2. Eine klasse in der das Textfeld und Labels zu finden sind. (abgeleitet von JPanel) <- FPanel.java
3. Eine klasse in der der "Erstellen" und "Beenden" button drin sind. (abgeleitet von JPanel) <- BPanel.java
4. Eine klasse, die den ActionListener implemetiert <-Wache.java
5. Eine klasse SimpleFrame (abgeleitet von JFrame) <-SimpleFrame.java
6. Eine klasse KFrame (abgeleitet von SimpleFrame) zum einfuegen der oben genannten Klassen <-KFrame.java
7. Eine klasse Farbschema zumfestlegen der Farben des Diagramms <-Farbschema.java
mein Problem:
So wie ich das sehe muesste man in der Klasse Wache (in actionPerformed) die methode
paintComponent aufrufen und ihr werte fuer
fillArc(x-wert ,y-wert, breite, hoehe, anfangswinkel, endewinkel) <- die die einzelnen farbigen kreissegmente zeichnen uebergeben.
bzw muesste fillArc fuer jedes Kreissegment erneut aufgerufen werden.
Ich habe keinen plan wie das gehen soll?, meine bisherigen Versuche scheiterten klaeglich.
Hoffe mir kann jemand die Herangehensweise erklaeren, oder mir anhand eines Funktionierenden Beispiels zeigen wies geht. (Das wird leider bald abgeprueft).
Hier der Quelltext der einzelnen Klassen:
Danke schon mal an alle,die sich die Muehe gemacht haben bis heirher zu lesen
1. DPanel.java
Code:
import javax.swing.*;
import java.awt.*;
public class DPanel extends JPanel{
int x,y,b,h,startw,delta;
public Farbschema fs = new Farbschema();
boolean paintIt = false;
public DPanel(int x, int y, int b, int h, int startw, int delta){
setBackground(Color.white);
this.x=x;
this.y=y;
this.b=b;
this.h=h;
this.startw=startw;
this.delta=delta;
}
public void zeichnen(Graphics g, int x, int y){
public void paintComponent (Graphics g){
super.paintComponent (g);
g.setColor(Color.blue);
g.fillArc(x,y,b,h,startw,delta);
}
}
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FPanel extends JPanel{
JLabel datenJl;
JTextField eingabeJtf;
JLabel leerJl;
public FPanel(){
//setPreferredSize(new Dimension(600,200));
datenJl = new JLabel("Daten:");
eingabeJtf = new JTextField("");
leerJl = new JLabel("");
//getContentPane(). wieso meckert er wenn ich getContentPane(). davorsetze?? was macht das noch mal genau?
setLayout(new GridLayout (3,1));
add(datenJl);
add(eingabeJtf);
add(leerJl);
}
}
Code:
import java.awt.*;
import javax.swing.*;
public class BPanel extends JPanel{
JButton eb;
JButton bb;
public BPanel(){
setLayout(new GridLayout(1,2));
//setPreferredSize(new Dimension(400,100));
eb = new JButton("Erstellen");
bb = new JButton("Beenden");
add(eb);
add(bb);
}
}
Code:
import java.awt.event.*;
import java.util.*;
public class Wache implements ActionListener{
private FPanel fp = new FPanel();
private DPanel dp = new DPanel();
private BPanel bp = new BPanel();
public Wache(DPanel dp, FPanel fp){
this.fp = fp;
this.dp = dp;
}
public void actionPerformed(ActionEvent evt){
if (evt.getActionCommand()=="Erstellen"){
String values = fp.eingabeJtf.getText();
System.out.println("was"+values);
StringTokenizer st = new StringTokenizer(values);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
if (evt.getActionCommand()=="Beenden"){
System.exit(0);
}
}
}
Code:
import java.awt.event.*;
import javax.swing.*;
public class SimpleFrame extends JFrame
{
public SimpleFrame(){
setSize(400,500);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void showIt(){
setVisible(true);
}
public void showIt(String title){
setTitle(title);
setVisible(true);
}
public void showIt(String title,int x, int y){
setTitle(title);
setLocation(x,y);
setVisible(true);
}
public void hideIt(){
setVisible(false);
}
}
Code:
import java.awt.*;
import javax.swing.*;
public class KFrame extends SimpleFrame{
public DPanel dp;
public FPanel fp;
public BPanel bp;
public KFrame(){
dp = new DPanel();
fp = new FPanel();
bp = new BPanel();
Wache w = new Wache(dp, fp);
bp.eb.addActionListener(w);
bp.bb.addActionListener(w);
//bp.setPreferredSize(new Dimension(400,100));
getContentPane().setLayout(new GridLayout(3,1));
getContentPane().add(dp);
getContentPane().add(fp);
getContentPane().add(bp);
}
}
Code:
import java.awt.Color;
public class Farbschema{
private Color[] schema;
public Farbschema(){
schema=new Color [8];
schema[0]=Color.red;
schema[1]=Color.blue;
schema[2]=Color.green;
schema[3]=Color.yellow;
schema[4]=Color.cyan;
schema[5]=Color.magenta;
schema[6]=Color.black;
schema[7]=Color.pink;
}
Color getColor(int farbIndex){
int anz=schema.length;
int pos=farbIndex%anz;
return schema[pos];
}
}
Code:
public class Test {
KFrame kf;
public Test(){
kf = new KFrame();
kf.showIt();
}
public static void main (String [] args){
Test t= new Test();
}
}