import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.event.ListDataListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.ListDataEvent;
import java.awt.*;
public class FEM_Hauptfenster extends JFrame {
private static final long serialVersionUID = 7373328358279206718L;
private Toolkit t;
private int x=0,y=0,width=0,height=0;
//Kompnenten
private JPanel Mastercontainer;
private JComboBox NaviBox;
//Untercontainer
private JPanel Startpanel;
private JPanel Modellpanel;
private JPanel Lastpanel;
private JPanel Ergebnispanel;
//Steuerelemente der einzelnen Panels
//Startpanel
private JLabel StartLabel;
//Modellpanel
private JLabel ModellLabel;
private JLabel EModulLabel;
private static JTextField EModulfeld;
private JLabel FlaechenmomentLabel;
private static JTextField Flaechenmomentfeld;
private JLabel LaengeLabel;
private static JTextField Laengefeld;
//Lastpanel
private JLabel LastLabel;
private JPanel LastEingabepanel;
private JLabel PositionLabel;
private JTextField Positionfeld;
private JLabel BetragLabel;
private JTextField Betragfeld;
private JButton AddLast;
private JButton StartBerechnung;
private JScrollPane Tabellenfenster;
//private DefaultTableModel model;
private JTable lastTabelle;
private Object[][] data=new Object[Modell.AnzahlLasten][3];
//Ergebnispanel
private JLabel ErgebnisLabel;
private JTable Ergebnistabelle;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FEM_Hauptfenster frame = new FEM_Hauptfenster();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public FEM_Hauptfenster() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Ermittlung der Fenstergröße und Position für Vollbild
t=Toolkit.getDefaultToolkit();
Dimension d=t.getScreenSize();
width=t.getScreenSize().width;
height=t.getScreenSize().height;
x=(int)((d.getWidth()-width)/2);
y=(int)((d.getHeight()-height)/2);
setBounds(x, y, width, height);
this.initComponents();
this.initListeners();
setVisible(true);
}
private void initListeners() {
this.NaviBox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getItem().equals("Start")){
Mastercontainer.remove(Modellpanel);
Mastercontainer.remove(Lastpanel);
Mastercontainer.remove(Ergebnispanel);
Mastercontainer.add(Startpanel);
Mastercontainer.repaint();
validate();
}
if(e.getItem().equals("Modell")){
Mastercontainer.remove(Startpanel);
Mastercontainer.remove(Lastpanel);
Mastercontainer.remove(Ergebnispanel);
Mastercontainer.add(Modellpanel);
Mastercontainer.repaint();
validate();
}
if(e.getItem().equals("Lasten")){
Mastercontainer.remove(Modellpanel);
Mastercontainer.remove(Startpanel);
Mastercontainer.remove(Ergebnispanel);
Mastercontainer.add(Lastpanel);
Mastercontainer.repaint();
validate();
}
if(e.getItem().equals("Ergebnisse")){
Mastercontainer.remove(Modellpanel);
Mastercontainer.remove(Lastpanel);
Mastercontainer.remove(Startpanel);
Mastercontainer.add(Ergebnispanel);
Mastercontainer.repaint();
validate();
}
}
});
AddLast.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==AddLast){
DefaultTableModel model = (DefaultTableModel) lastTabelle.getModel();
model.addRow(new Object[]{"Column 1", "Column 2", "Column 3","Column 4","Column 5"});
//System.out.println(Positionfeld.getText());
//System.out.println(Betragfeld.getText());
}
}
});
StartBerechnung.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(e.getSource()==StartBerechnung){
Berechnung.main(null);
}
}
});
}
private void initComponents() {
this.getContentPane().setLayout(new BorderLayout());
//Anlegen aller Panels
//Erzeugen des Containers für Panels und ComboBox im Hauptfenster
this.Mastercontainer = new JPanel(new CardLayout());
this.NaviBox=new JComboBox(new String []{"Start","Modell","Lasten","Ergebnisse"});
this.NaviBox.setEditable(false);
//Initialisieren der Untercontainer
this.Startpanel = new JPanel();
this.Modellpanel = new JPanel(new GridBagLayout());
this.Lastpanel=new JPanel(new BorderLayout());
this.Ergebnispanel=new JPanel(new BorderLayout());
GridBagConstraints c=new GridBagConstraints();
//Startpanel
//Initialisieren der Steuerelemente
this.StartLabel=new JLabel("Dieses Programm berechnet einen Biegebalken unter Eizellast mit Hilfe der FEM");
//Hinzufügen zum Panel
this.Startpanel.add(this.StartLabel);
//Modellpanel
//Initialisieren der Steuerelemente
this.ModellLabel=new JLabel("Hier werden die einzelnen Modellparameter festgelegt");
this.EModulLabel=new JLabel("EModul:");
EModulfeld=new JTextField("EModul eingeben");
this.FlaechenmomentLabel=new JLabel("Flächenmoment:");
Flaechenmomentfeld=new JTextField("Flächenträgheitsmoment eingeben");
this.LaengeLabel=new JLabel("Modelllänge:");
Laengefeld=new JTextField("Modelllänge eingeben");
//Hinzufügen der Steuerelemente
//ModellLabel
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.CENTER;
c.gridx=0;
c.gridy=0;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.ModellLabel,c);
//EModulLabel
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_START;
c.gridx=0;
c.gridy=1;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.EModulLabel,c);
//EModulfeld
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_END;
c.gridx=1;
c.gridy=1;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.EModulfeld,c);
//FlaechenmomentLabel
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_START;
c.gridx=0;
c.gridy=2;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.FlaechenmomentLabel,c);
//Flaechenmomentfeld
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_END;
c.gridx=1;
c.gridy=2;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.Flaechenmomentfeld,c);
//LaengeLabel
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_START;
c.gridx=0;
c.gridy=3;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.LaengeLabel,c);
//Laengefeld
c.fill=GridBagConstraints.HORIZONTAL;
c.anchor=GridBagConstraints.PAGE_END;
c.gridx=1;
c.gridy=3;
c.gridwidth=3;
c.insets=new Insets(10,10,10,10);
this.Modellpanel.add(this.Laengefeld,c);
//Lastpanel
//Initialisieren der Steuerelemente
this.LastLabel=new JLabel("Hier sind die einzelnen Lasten mit ihren Position und ihren Beträgen zu definieren");
this.LastEingabepanel=new JPanel(new GridLayout(0,2));
this.PositionLabel=new JLabel("Position:");
this.Positionfeld=new JTextField("Position eingeben");
this.BetragLabel=new JLabel("Betrag:");
this.Betragfeld=new JTextField("Betrag eingeben");
this.AddLast=new JButton("Last erzeugen");
this.StartBerechnung=new JButton("Starten der Berechnung");
/*
//Tabellenkopf
String[] columnNames = {"Nummer",
"Position",
"Betrag",
};
//Daten
Object[][] data = {
{new Integer(1), new Integer(70), new Integer(1000)},
};
this.lastTabelle=new JTable(data,columnNames);*/
DefaultTableModel model = new DefaultTableModel();
model.addColumn("Nummer");
model.addColumn("Position");
model.addColumn("Betrag");
JTable lastTabelle = new JTable(model);
this.Tabellenfenster=new JScrollPane(lastTabelle);
//Hinzufügen der Sterelemente
Lastpanel.add(LastLabel, BorderLayout.PAGE_START);
Lastpanel.add(LastEingabepanel, BorderLayout.CENTER);
Lastpanel.add(Tabellenfenster, BorderLayout.PAGE_END);
//Hinzufügen der Steuerelemente zum Steuerpanel
LastEingabepanel.add(PositionLabel);
LastEingabepanel.add(Positionfeld);
LastEingabepanel.add(BetragLabel);
LastEingabepanel.add(Betragfeld);
LastEingabepanel.add(AddLast);
LastEingabepanel.add(StartBerechnung);
//Ergebnispanel
//Initialisieren der Steuerelemente
this.ErgebnisLabel=new JLabel("Hier werden die Ergebnisse der Berechnung ausgegeben*");
//Hinzufügen der Steuerelemente
this.Ergebnispanel.add(this.ErgebnisLabel);
//Hinzufgen der Panels zum Mastercontainer
this.Mastercontainer.add(this.Startpanel,"Startpanel");
this.Mastercontainer.add(this.Modellpanel,"Modellpanel");
this.Mastercontainer.add(this.Lastpanel,"Lastpanel");
this.Mastercontainer.add(this.Ergebnispanel,"Ergebnispanel");
this.getContentPane().add(this.NaviBox, BorderLayout.PAGE_START);
this.getContentPane().add(Mastercontainer, BorderLayout.CENTER);
}
static double getI(){
return Double.parseDouble(Flaechenmomentfeld.getText());
}
static double getE(){
return Double.parseDouble(EModulfeld.getText());
}
static double getL(){
return Double.parseDouble(Laengefeld.getText());
}
}