Abend, Ich hab ein Geometric Calculator Programmiert, ich will dass, die werte die in der Tabelle gespeichert werden, in einer MSQL Daten Bank auch gespeichert werden.
Ich hab eine Tabelle gebaut mit MySQL workbench aber ich kriege es nicht hin die werte auch da zu speichern/zu sehen !
vielen dank für eure Hilfe
GUI:
Geometrics:
MySQL:
MysqlHandler:
Interface:
TableModel:
ListViewHandler :
Vielen Dank !
Ich hab eine Tabelle gebaut mit MySQL workbench aber ich kriege es nicht hin die werte auch da zu speichern/zu sehen !
vielen dank für eure Hilfe
GUI:
Java:
package de.sbsapp.examples.geometriccalculator.gui;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import de.sbsapp.examples.geometriccalculator.jtrainertablemodel.JTrainerTableModel;
import de.sbsapp.examples.geometriccalculator.model.Circle;
import de.sbsapp.examples.geometriccalculator.model.Geometrics;
import de.sbsapp.examples.geometriccalculator.model.Square;
import de.sbsapp.examples.geometriccalculator.model.Triangle;
public class GUI
implements GeometricCalculatorListViewHandler
{
private JFrame frame;
private boolean isEditing = true;
private ArrayList<Geometrics> list = new ArrayList<Geometrics>();
private JPanel pnlButton;
private JPanel pnlTable;
private JPanel pnlExit;
public JTable tblResults;
public JTrainerTableModel model;
private CirclePanel _circlePanel;
private TrianglePanel _trianglePanel;
private SquarePanel _squarePanel;
// private JTable tblResults;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GUI window = new GUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public GUI() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(200, 200, 600, 450);
frame.setTitle("A & P Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
pnlButton = new JPanel(new GridLayout(1, 3));
pnlButton.setBounds(50, 20, 500, 50);
pnlTable = new JPanel();
pnlTable.setBounds(155, 110, 460, 190);
pnlExit = new JPanel(new GridLayout(1, 1));
pnlExit.setBounds(460, 350, 90, 40);
JButton btnButtonExit = new JButton("Exit");
JButton btnButtonCircle = new JButton("Circle");
JButton btnButtonSquare = new JButton("Square");
JButton btnButtonTriangle = new JButton("Triangle");
final DefaultTableModel model = new DefaultTableModel();
tblResults = new JTable();
tblResults
.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
tblResults.setModel(model);
model.addColumn("Symbol");
model.addColumn("Name");
model.addColumn("Area");
model.addColumn("Perimeter");
JScrollPane pane = new JScrollPane(tblResults);
pnlTable.add(pane);
tblResults.setPreferredScrollableViewportSize(new Dimension(300, 150));
tblResults.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(tblResults);
pnlTable.add(scrollPane);
pnlButton.add(btnButtonSquare);
pnlButton.add(btnButtonCircle);
pnlButton.add(btnButtonTriangle);
pnlExit.add(btnButtonExit);
// ///////////////////////////////
// //// TRIANGEL PANEL ///////////////////////////////////////
// //////////////////////////////
_trianglePanel = new TrianglePanel(this);
_trianglePanel.initialize();
frame.getContentPane().add(_trianglePanel);
// ///////////////////////////////
// //// CIRCLE PANEL //////////
// //////////////////////////////
_circlePanel = new CirclePanel(this);
_circlePanel.initialize();
frame.getContentPane().add(_circlePanel);
// ///////////////////////////////
// //// OTHER PANELS //////////
// //////////////////////////////
frame.getContentPane().add(pnlButton);
frame.getContentPane().add(pnlTable);
frame.getContentPane().add(pnlExit);
// ///////////////////////////////
// //// SQUARE PANEL //////////
// //////////////////////////////
_squarePanel = new SquarePanel(this);
_squarePanel.initialize();
frame.getContentPane().add(_squarePanel);
// ///////////////////////////////
// //// EDIT BUTTON UND EVENT-LISTENER //////////
// //////////////////////////////
final JButton btnEditValue = new JButton("edit value");
btnEditValue.addActionListener(new EditValueAction(btnEditValue));
// ///////////////////////////////
// //// ADD TRIANGLE BUTTON EVENT_HANDLER //////////
// //////////////////////////////
btnEditValue.setBounds(265, 306, 117, 29);
frame.getContentPane().add(btnEditValue);
// ///////////////////////////////
// //// DELETE BUTTON EVENT_HANDLER //////////
// //////////////////////////////
JButton btnDeleteValue = new JButton("delete value");
btnDeleteValue.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int row = tblResults.getSelectedRow();
DefaultTableModel model = (DefaultTableModel) tblResults
.getModel();
model.removeRow(row);
list.remove(row);
}
});
btnDeleteValue.setBounds(394, 306, 117, 29);
frame.getContentPane().add(btnDeleteValue);
// ///////////////////////////////
// //// PANEL BUTTON EVENT_HANDLER (SQUARE / CIRCLE / TRIANGLE)
// //////////
// //////////////////////////////
btnButtonSquare.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
_circlePanel.setVisible(false);
_squarePanel.setVisible(true);
_trianglePanel.setVisible(false);
}
});
btnButtonCircle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
_circlePanel.setVisible(true);
_squarePanel.setVisible(false);
_trianglePanel.setVisible(false);
}
});
btnButtonTriangle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
_circlePanel.setVisible(false);
_squarePanel.setVisible(false);
_trianglePanel.setVisible(true);
}
});
btnButtonExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent exit) {
System.exit(0);
}
});
}
class EditValueAction implements ActionListener
{
final JButton _btnEditValue;
public EditValueAction(JButton btnEditValue)
{
_btnEditValue = btnEditValue;
}
@Override
public void actionPerformed(ActionEvent e)
{
int row = tblResults.getSelectedRow();
_btnEditValue.setText("save values");
if (isEditing == true) {
isEditing = false;
if (list.get(row) instanceof Square) {
_squarePanel.setVisible(true);
_circlePanel.setVisible(false);
_trianglePanel.setVisible(false);
//TODO change it
_squarePanel._nameSquare.setText(list.get(row).getName());
Square actSquare = (Square) list.get(row);
//TODO change it
String str = String.valueOf(actSquare.getSideA());
_squarePanel._txtSideA.setText(str);
//TODO change it
String.valueOf(actSquare.getSideB());
_squarePanel._txtSideB.setText(str);
} else if (list.get(row) instanceof Circle) {
_squarePanel.setVisible(false);
_circlePanel.setVisible(true);
_trianglePanel.setVisible(false);
//TODO change it
_circlePanel._nameCirc.setText(list.get(row).getName());
Circle actCircle = (Circle) list.get(row);
String str = String.valueOf(actCircle.getRadius());
//TODO change it
_circlePanel._txtRadius.setText(str);
} else if (list.get(row) instanceof Triangle) {
_squarePanel.setVisible(false);
_circlePanel.setVisible(false);
_trianglePanel.setVisible(true);
//TODO change it
_trianglePanel._nameTriangle.setText(list.get(row).getName());
Triangle actTri = (Triangle) list.get(row);
String str = String.valueOf(actTri.getSideA());
//TODO change it
_trianglePanel._txtTriA.setText(str);
String str2 = String.valueOf(actTri.getSideB());
//TODO change it
_trianglePanel._txtTriB.setText(str2);
String str3 = String.valueOf(actTri.getSideC());
//TODO change it
_trianglePanel._txtTriC.setText(str3);
String str4 = String.valueOf(actTri.getHeight());
//TODO change it
_trianglePanel._txtHeight.setText(str4);
}
} else {
isEditing = true;
_btnEditValue.setText("edit values");
if (list.get(row) instanceof Square) {
//TODO change it
list.get(row).setName(_squarePanel._nameSquare.getText());
Square actSquare = (Square) list.get(row);
actSquare.setSideA(Double.parseDouble(_squarePanel._txtSideA.getText()));
actSquare.setSideB(Double.parseDouble(_squarePanel._txtSideB.getText()));
tblResults.getModel().setValueAt(actSquare.getName(), row,
1);
tblResults.getModel().setValueAt(
actSquare.getArea() + " cm\u00B2", row, 2);
tblResults.getModel().setValueAt(
actSquare.getPerimeter() + " cm", row, 3);
}
else if (list.get(row) instanceof Circle) {
//TODO change it
list.get(row).setName(_circlePanel._nameCirc.getText());
Circle actCircle = (Circle) list.get(row);
actCircle
.setRadius(Double.parseDouble(_circlePanel._txtRadius.getText()));
tblResults.getModel().setValueAt(actCircle.getName(), row,
1);
tblResults.getModel().setValueAt(
actCircle.getArea() + " cm\u00B2", row, 2);
tblResults.getModel().setValueAt(
actCircle.getPerimeter() + " cm", row, 3);
}
else if (list.get(row) instanceof Triangle) {
//TODO change it
list.get(row).setName(_trianglePanel._nameTriangle.getText());
Triangle actTri = (Triangle) list.get(row);
actTri.setSideA(Double.parseDouble(_trianglePanel._txtTriA.getText()));
actTri.setSideB(Double.parseDouble(_trianglePanel._txtTriB.getText()));
actTri.setSideC(Double.parseDouble(_trianglePanel._txtTriC.getText()));
actTri.setHeight(Double.parseDouble(_trianglePanel._txtHeight.getText()));
tblResults.getModel().setValueAt(actTri.getName(), row, 1);
tblResults.getModel().setValueAt(
actTri.getArea() + " cm\u00B2", row, 2);
tblResults.getModel().setValueAt(
actTri.getPerimeter() + " cm", row, 3);
}
}
}
}
@Override
public void addGeometric(Geometrics geometrics)
{
list.add(geometrics);
((DefaultTableModel) tblResults.getModel()).addRow(new Object[] {
geometrics.getSymbolicLabel(), geometrics.getName(), geometrics.getArea() + " cm\u00B2 ",
geometrics.getPerimeter() + " cm" });
}
}
Geometrics:
Java:
package de.sbsapp.examples.geometriccalculator.model;
public abstract class Geometrics {
public String name;
protected Double _area = null;
protected Double _perimeter = null;
protected Geometrics(String initName)
{
setName(initName);
}
public void setName(String newName)
{
this.name = newName;
}
public String getName()
{
return this.name;
}
protected void resetCalculation()
{
_area = null;
_perimeter = null;
}
public double getArea()
{
if(_area == null) {
calculateArea();
}
return _area;
}
public double getPerimeter()
{
if(_perimeter == null) {
calculatePerimeter();
}
return _perimeter;
}
abstract public String getSymbolicLabel();
abstract protected void calculateArea();
abstract protected void calculatePerimeter();
}
MySQL:
Java:
package de.Work.Times.Calculator.Handler;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
public class MySQL {
public Connection conn = null;
public Statement statement = null;
private String userName = "root";
private String password = "";
private String url = "jdbc:mysql://localhost:3306/test";
public MySQL() {
}
public void connectToDatabase() throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password);
System.out.println("Database connection established.");
} catch (Exception e) {
System.out.println("Error" + e);
}
}
}
MysqlHandler:
Java:
package de.Work.Times.Calculator.Handler;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import de.Work.Times.Calculator.Interface.ExportInterface;
import de.sbsapp.examples.geometriccalculator.model.Geometrics;
public class MysqlHandler implements ExportInterface {
@Override
public void exportGcalculator(List<Geometrics> CalList) throws IOException {
MySQL sql = new MySQL();
try {
sql.connectToDatabase();
for (Geometrics w : CalList) {
sql.statement = sql.conn.createStatement();
sql.statement.executeUpdate("insert into times values ('"
+ w.getSymbolicLabel()+ "','" + w.getName() + "','"
+ w.getArea() + "','" + w.getPerimeter() + "')");
}
} catch (SQLException e) {
System.out.println("Error while connecting to database" + e);
}
}
@Override
public void importGcalculator(List<Geometrics> workDayList) throws IOException {
// TODO Auto-generated method stub
}
}
Interface:
Java:
package de.Work.Times.Calculator.Interface;
import java.io.IOException;
import java.util.List;
import de.sbsapp.examples.geometriccalculator.model.Geometrics;
public interface ExportInterface {
public void exportGcalculator(List <Geometrics> CalList) throws IOException;
public void importGcalculator(List <Geometrics> workDayList) throws IOException;
}
TableModel:
Java:
package de.sbsapp.examples.geometriccalculator.jtrainertablemodel;
import java.text.NumberFormat;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
public class JTrainerTableModel extends DefaultTableModel {
private static final long serialVersionUID = 1L;
private final NumberFormat formater;
private JTrainerTableModel(Vector<String> headerVector, int i) {
super(headerVector, i);
formater = NumberFormat.getInstance();
formater.setMaximumIntegerDigits(2);
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
}
ListViewHandler :
Java:
package de.sbsapp.examples.geometriccalculator.gui;
import de.sbsapp.examples.geometriccalculator.model.Geometrics;
public interface GeometricCalculatorListViewHandler
{
public void addGeometric(Geometrics geometrics);
}
Vielen Dank !
Zuletzt bearbeitet: