import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
public class GUI implements ActionListener{
public static JLabel gesamtKunde = new JLabel("Endkundenpreis: 0€");
public static JLabel gesamtHaendler = new JLabel("Händlerpreis: 0€");
public static JLabel gesamtGewinn = new JLabel("Händlergewinn: 0€");
public static double rabattProzent = 40;
ButtonGroup g = new ButtonGroup();
public static void main(String[] args) {
GUI gui = new GUI();
}
public GUI(){
JFrame window = new JFrame( "Sunsoft Preiskalkulator" );
window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
window.setSize( 800, 600 );
JPanel basicWindow = new JPanel();
JPanel gesamtPreisePanel = new JPanel();
basicWindow.setLayout(new BorderLayout(5,5));
window.add(basicWindow);
JScrollPane tableScrollpane = new JScrollPane(drawTable());
basicWindow.add(drawRadioButtons(), BorderLayout.NORTH);
basicWindow.add(tableScrollpane);
basicWindow.add(gesamtPreisePanel, BorderLayout.SOUTH);
gesamtPreisePanel.add(gesamtKunde);
gesamtPreisePanel.add(gesamtHaendler);
gesamtPreisePanel.add(gesamtGewinn);
window.setVisible( true );
}
private JPanel drawRadioButtons (){
//Funktion
}
public void actionPerformed(ActionEvent e) {
//funktion
}
@SuppressWarnings("unchecked")
private JTable drawTable() {
//erstellt die Tabelle
}
}
class Produkttabelle implements TableModel, TableModelListener{
private Vector articels = new Vector();
private Vector<Integer> anzahlArtikel = new Vector<Integer>();
private Vector listeners = new Vector();
//diverse Funktionen für die Tabelle
//diese Funktion is eine der Sorgenkinder. Die kann ja nicht static sein und greift auf fremde Variablen zu:
public Object getValueAt(int rowIndex, int columnIndex) {
Artikel artikel = (Artikel)articels.get( rowIndex );
int anzahl = anzahlArtikel.get(rowIndex);
switch( columnIndex ){
case 0: return artikel.getName();
case 1: return new Double( artikel.getPreis() );
case 2: return anzahl;
case 3: return new Double ( anzahl * artikel.getPreis());
case 4: return new Double( artikel.getRabatt()* GUI.rabattProzent );
case 5: return new Double( anzahl * ( artikel.getPreis() - artikel.getPreis() * artikel.getRabatt() * (GUI.rabattProzent / 100) ) );
default: return null;
}
}
//und diese Funktion soll auch aus der Klasse GUI aufgerufen werden können
public void gesamtBetraege(){
//Erst den Kunden ausrechnen
double betragKunde = 0, betragHaendler = 0;
for(int i=0; i< articels.size(); i++){
betragKunde += (Double)getValueAt(i, 3);
}
GUI.gesamtKunde.setText("Endkundenpreis: " + betragKunde + "€");
//Jetzt den Händler
for(int i=0; i< articels.size(); i++){
betragHaendler += (Double)getValueAt(i, 5);
}
GUI.gesamtHaendler.setText("Händlerpreis: " + betragHaendler + "€");
//Jetzt den Gewinn
GUI.gesamtGewinn.setText("Händlergewinn: " + (betragKunde - betragHaendler) + "€");
}
}