Schönen guten Morgen.
So neuer Tag neues Problem mit Java. Wenn man nur 2,5 Monate in der Uni ein wenig die Grundagen lernt kommt man irgendwie ohne Hilfe kaum weiter.
Momentan habe ich Probleme bei der Grafikausgabe meines Gantt-Diagramms. Und zwar will ich bei jeder neuen Eingabe die Balkendarstellung(momentan nur provisorisch von der Anordnung) erneuern. Leider funktioniert das überhaupt nicht wie ich das gerne hätte.
Und zwar wenn iich meine ersten Werte übergebe, wil ich über "p5.remove(p8)" meine alte Darstellung entfernen und eine neue danach initialisieren. Aber es scheint als würde mir dann noch einmal die gesamte oberfläche in dieses panel geschrieben. leider sehe ich nicht voran es liegt.
Vielen Dank für jegliche Hilfen und verbesserungsvorschläge.
So neuer Tag neues Problem mit Java. Wenn man nur 2,5 Monate in der Uni ein wenig die Grundagen lernt kommt man irgendwie ohne Hilfe kaum weiter.
Momentan habe ich Probleme bei der Grafikausgabe meines Gantt-Diagramms. Und zwar will ich bei jeder neuen Eingabe die Balkendarstellung(momentan nur provisorisch von der Anordnung) erneuern. Leider funktioniert das überhaupt nicht wie ich das gerne hätte.
Und zwar wenn iich meine ersten Werte übergebe, wil ich über "p5.remove(p8)" meine alte Darstellung entfernen und eine neue danach initialisieren. Aber es scheint als würde mir dann noch einmal die gesamte oberfläche in dieses panel geschrieben. leider sehe ich nicht voran es liegt.
Vielen Dank für jegliche Hilfen und verbesserungsvorschläge.
Java:
public class TestBenutzeroberfläche {
public static void main(String[] args) {
new Benutzeroberfläche();
}
}
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class Benutzeroberfläche extends JFrame implements ActionListener,
MouseListener {
private DefaultListModel daten = new DefaultListModel();
private JList auflistung = new JList(daten);
private JButton hinzufuegen = new JButton("Vorgang hinzufügen");
private JButton bearbeiten = new JButton("Vorgang bearbeiten");
private JButton entfernen = new JButton("Vorgang entfernen");
private JTextField bezeichnung = new JTextField();
private JTextField anfang = new JTextField();
private JTextField dauer = new JTextField();
private JTextField erfüllt = new JTextField();
private JButton uebernehmen = new JButton("Änderungen übernehmen");
private JPanel p1, p2, p3, p4, p5, p6, p7,p8;
private int index;
private ArrayList<Vorgang> vorgaenge = new ArrayList<Vorgang>();
public Benutzeroberfläche() {
JFrame f = new JFrame();
f.setTitle("Gannt-Diagramm-Editor");
f.setSize(1050, 650);
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bezeichnung.enable(false);
anfang.enable(false);
dauer.enable(false);
erfüllt.enable(false);
// JPanel-Verschachtelung zur Darstellung "Alle Vorgänge"
p1 = new JPanel(new GridLayout(2, 1, 5, 5));
p1.setBorder(new TitledBorder("Alle Vorgänge"));
p1.add(auflistung);
p2 = new JPanel(new GridLayout(3, 1, 5, 5));
p2.add(hinzufuegen);
p2.add(bearbeiten);
p2.add(entfernen);
p1.add(p2);
// JPanel-Verschachtelung zur Darstellung "Vorgangsdaten"
p3 = new JPanel(new BorderLayout(5, 5));
p6 = new JPanel(new GridLayout(4, 2, 5, 5));
p3.setBorder(new TitledBorder("Vorgangsdaten"));
p6.add(new JLabel("Bezeichnung"));
p6.add(bezeichnung);
p6.add(new JLabel("Starttag"));
p6.add(anfang);
p6.add(new JLabel("Dauer"));
p6.add(dauer);
p6.add(new JLabel("Erfüllt"));
p6.add(erfüllt);
p3.add(p6, BorderLayout.CENTER);
p3.add(uebernehmen, BorderLayout.SOUTH);
p7 = new JPanel(new GridLayout(1, 1, 5, 5));
p7.setBorder(new TitledBorder("Projektdaten"));
p4 = new JPanel(new GridLayout(3, 1));
p4.add(p1);
p4.add(p3);
p4.add(p7);
// JPanel zur Darstellung des Gantt-Diagramms
p5 = new JPanel(new GridLayout(1, 1, 10, 10));
p5.setBorder(new TitledBorder("Diagramm"));
p8 = new GanttDiagrammDarstellung(vorgaenge);
p5.add(p8);
f.add(p4, BorderLayout.WEST);
f.add(p5, BorderLayout.CENTER);
// ActionListener-Methode den JButtons zuweisen
hinzufuegen.addActionListener(this);
uebernehmen.addActionListener(this);
bearbeiten.addActionListener(this);
entfernen.addActionListener(this);
auflistung.addMouseListener(this);
}
// mouseClicked-Event zur Bestimmung des angewählten Namens
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
index = auflistung.locationToIndex(e.getPoint());
}
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == hinzufuegen) {
bezeichnung.enable(true);
anfang.enable(true);
dauer.enable(true);
erfüllt.enable(true);
}
if (ae.getSource() == bearbeiten) {
bezeichnung.enable(true);
anfang.enable(true);
dauer.enable(true);
erfüllt.enable(true);
bezeichnung.setText(vorgaenge.get(index).getName());
anfang.setText("" + vorgaenge.get(index).getAnfang());
dauer.setText("" + vorgaenge.get(index).getDauer());
vorgaenge.remove(index);
daten.remove(index);
}
if (ae.getSource() == entfernen) {
bezeichnung.enable(true);
anfang.enable(true);
dauer.enable(true);
erfüllt.enable(true);
vorgaenge.remove(index);
daten.remove(index);
}
if (ae.getSource() == uebernehmen) {
String name = bezeichnung.getText();
double a = Double.parseDouble(anfang.getText());
double d = Double.parseDouble(dauer.getText());
vorgaenge.add(new Vorgang(name, a, d));
daten.addElement(name);
//Eingabefelder leeren
bezeichnung.setText("");
anfang.setText("");
dauer.setText("");
//Eingabefelder "ausschalten"
bezeichnung.enable(false);
anfang.enable(false);
dauer.enable(false);
erfüllt.enable(false);
//Gannt-Diagramm erneuern
p5.remove(p8);
p8 = new GanttDiagrammDarstellung(vorgaenge);
p5.add(p8);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JPanel;
public class GanttDiagrammDarstellung extends JPanel {
private ArrayList<Vorgang> vorgaenge;
public GanttDiagrammDarstellung(ArrayList<Vorgang> vorgaenge) {
super();
this.vorgaenge=vorgaenge;
}
// Verwendung von Boxen zur grafischen Darstellung der Bauabläufe
public void balkenDarstellung(Graphics g) {
for (int i = 0; i < vorgaenge.size(); i++) {
g.setColor(Color.red);
g.drawRect(70, 100 + 50 * i, 50, 15);
g.fillRect(70, 100 + 50 * i, 50, 15);
}
}
// Beschriftung der Balken
public void beschriftung(Graphics g) {
for (int i = 0; i < vorgaenge.size(); i++) {
}
}
//Grafische Darstellung der Zeitunterteilung
public void zeitunterteilung(Graphics g) {
for (int i = 0; i < vorgaenge.size(); i++) {
g.drawLine(70+i * 25, 100, 70+i * 25, 500);
g.setColor(Color.gray);
}
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
zeitunterteilung(g);
balkenDarstellung(g);
beschriftung(g);
}
}
Java:
public class Vorgang {
private String name;
private double anfang;
private double dauer;
public Vorgang(String name, double anfang, double dauer) {
this.name = name;
this.anfang = anfang;
this.dauer = dauer;
}
public String getName() {
return name;
}
public double getAnfang() {
return anfang;
}
public double getDauer() {
return dauer;
}
}