Halli Hallo!
Ich bin ziemlich neu in der Welt von Java.
Habe bis jetzt zwei Lehrgänge besucht und wollte nun ein wenig rumprobieren.
Da wir regelmäßig zu Hause die Zählerstände ablesen, dachte ich mir, dass ich ein Programm baue, bei dem man die Daten in einer GUI eingibt und diese dann in eine Excel-Tabelle geschrieben werden!
Leider hakt es irgendwo an einer STelle und ich weiß nicht wo
Vielleicht kann mir jemand helfen!?
Irgendwie nimmt er die Daten im TextField nicht an. Programmier in Eclipse und das zeigt mir keinerlei Fehler an!
Habe zwei Klassen gebastelt, die ich dann über eine Klasse mit main-Methode aufrufe:
main-Klasse (Application):
Klasse, um Tabelle zu erzeugen und Einträge zu steuern:
Klasse, die GUI erstellt:
Ich bin ziemlich neu in der Welt von Java.
Habe bis jetzt zwei Lehrgänge besucht und wollte nun ein wenig rumprobieren.
Da wir regelmäßig zu Hause die Zählerstände ablesen, dachte ich mir, dass ich ein Programm baue, bei dem man die Daten in einer GUI eingibt und diese dann in eine Excel-Tabelle geschrieben werden!
Leider hakt es irgendwo an einer STelle und ich weiß nicht wo
Vielleicht kann mir jemand helfen!?
Irgendwie nimmt er die Daten im TextField nicht an. Programmier in Eclipse und das zeigt mir keinerlei Fehler an!
Habe zwei Klassen gebastelt, die ich dann über eine Klasse mit main-Methode aufrufe:
main-Klasse (Application):
Code:
import java.io.IOException;
public class Application {
public static void main(String[] args) {
Tabelle2 tab= new Tabelle2();
try {
tab.tabelleErzeugen();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
GUI g=new GUI("Zaehlerstand");
g.setVisible(true);
}
}
Klasse, um Tabelle zu erzeugen und Einträge zu steuern:
Code:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
public class Tabelle2 {
HSSFWorkbook wb;
HSSFSheet sh ;
HSSFRow row;
HSSFCell cell;
HSSFCellStyle csty;
public void tabelleErzeugen()throws IOException {
// Neue Mappe erzeugen
wb = new HSSFWorkbook();
// Neue Tabelle erzeugen
sh = wb.createSheet();
// Objektreferenz auf Reihe erzeugen
row = null;
// Objektreferenz auf Zelle erzeugen
cell = null;
// Zellformat Objekt erzeugen
csty = wb.createCellStyle();
// Datenformat Objekt erzeugen
// HSSFDataFormat df = wb.createDataFormat();
// Font-Objekt erzeugen
HSSFFont font = wb.createFont();
// Schriftgröße auf 12pt einstellen
font.setFontHeightInPoints((short) 12);
// Schriftfarbe blau
font.setColor((short)0xC);
// Schriftart
font.setFontName("Times New Roman");
// Fett
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Schriftart auf Zellformat-Objekt anwenden
csty.setFont(font);
// Rahmen einstellen
csty.setBorderBottom(HSSFCellStyle.BORDER_THIN);
csty.setBottomBorderColor(HSSFColor.PINK.index);
csty.setBorderLeft(HSSFCellStyle.BORDER_THICK);
// Zeile mit Überschriften erzeugen
short rownum=0;
row=sh.createRow(rownum);
cell=row.createCell(0);
cell.setCellStyle(csty);
cell.setCellValue("Datum");
cell=row.createCell(2);
cell.setCellStyle(csty);
cell.setCellValue("Stromzaehler");
cell=row.createCell(4);
cell.setCellStyle(csty);
cell.setCellValue("Wasserzaehler");
cell=row.createCell(6);
cell.setCellStyle(csty);
cell.setCellValue("Gaszaehler");
// Ausgabedatei ereugen
FileOutputStream out;
try {
out = new FileOutputStream("Tabelle.xls");
// Mappe schreiben und Datei schließen
wb.write(out);
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // Ende Tabelle erzeugen
public void eintraegeErzeugen(String pDatum, String pZaehler, String pElement)
throws FileNotFoundException, IOException {
// Excel Mappe öffnen
wb = new HSSFWorkbook(new FileInputStream("Tabelle.xls"));
// Tabelle1 auswählen
sh = wb.getSheet("Tabelle1");
// Objektreferenz auf Zeile erzeugen
HSSFRow row = null;
// Objektreferenz auf Zelle erzeugen
HSSFCell cell = null;
int anzahl_zeilen=sh.getLastRowNum();
row=sh.createRow(anzahl_zeilen+1);
cell=row.createCell(0);
cell.setCellValue(pDatum);
if (pElement.equals("Stromzaehler")) {
cell=row.createCell(2);
cell.setCellValue(pZaehler);
}
if (pElement.equals("Wasserzaehler")) {
cell=row.createCell(4);
cell.setCellValue(pZaehler);
}
if (pElement.equals("Gaszaehler")) {
cell=row.createCell(6);
cell.setCellValue(pZaehler);
}
// Ausgabedatei ereugen
FileOutputStream out;
try {
out = new FileOutputStream("Tabelle.xls");
// Mappe schreiben und Datei schließen
wb.write(out);
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // Ende eintraegeErzeugen
} // Ende class
Klasse, die GUI erstellt:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
public class GUI extends JFrame implements ListDataListener {
private static final long serialVersionUID = 1L;
Tabelle2 tab=new Tabelle2();
private DefaultComboBoxModel comboBoxModel1;
JLabel l1=new JLabel("Datum",0);
JLabel l2=new JLabel("Datum",0);
JTextField tf1=new JTextField(20);
JComboBox cb1;
JLabel l3=new JLabel("Zaehlerstand",0);
JTextField tf2=new JFormattedTextField(20);
JButton b1=new JButton("eintragen");
JPanel p=new JPanel();
/**
* Fenstererzeugung
* @param pTitel
*/
public GUI(String pTitel) {
super(pTitel);
this.createGUI();
this.eventhandling();
}
private void createGUI() {
this.fillComboBox();
this.add(this.l1, BorderLayout.NORTH);
l1.setForeground(Color.RED);
l1.setFont(new Font("Datum", 0, 24));
// Layout stapeln
this.p.setLayout(new GridLayout(4,2));
this.p.add(this.cb1);
this.p.add(this.b1);
this.p.add(new Label());
this.p.add(new Label());
this.p.add(this.l2);
l2.setFont(new Font("Datum", 0, 18));
this.p.add(this.tf1);
this.p.add(this.l3);
l3.setFont(new Font("Zaehlerstand", 0, 18));
this.p.add(this.tf2);
this.add(this.p, BorderLayout.CENTER);
this.pack();
}
private void eventhandling() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
b1.addActionListener(new ActionListener () {
@Override
public void actionPerformed(ActionEvent e) {
try{
if ( ! tf1.getText().isEmpty() || ! tf2.getText().isEmpty() ){
tf1.setText("");
tf2.setText("");
cb1.getSelectedItem().toString();
tab.eintraegeErzeugen(tf1.getText(),
tf2.getText(), cb1.getSelectedItem().toString());
}
else {
JOptionPane.showMessageDialog(
GUI.this,
"Bitte geben Sie das Datum UND den Zaehlerstand der Ablesung an");
}
} catch (Exception ex) {
// ex.getStackTrace();
JOptionPane.showMessageDialog(GUI.this, "FEHLER");
}
}
});
// Uhrzeit einfuegen
Timer t=new Timer();
// (Klasse, wann beginnen, warten bis naechster Aufruf)
t.schedule(new Datum(), 0, 1000);
}
private void fillComboBox() {
cb1=new JComboBox();
// ComboBoxModel erzeugen
Vector<String> zaehler=new Vector<String>();
zaehler.add("Stromzaehler");
zaehler.add("Wasserzaehler");
zaehler.add("Gaszaehler");
comboBoxModel1=new DefaultComboBoxModel(zaehler);
comboBoxModel1.addListDataListener(this);
//ComboBoxModel setzen
cb1.setModel(comboBoxModel1);
}
@Override
public void contentsChanged(ListDataEvent arg0) {
System.out.println(cb1.getModel().getSelectedItem());
}
@Override
public void intervalAdded(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void intervalRemoved(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
private class Datum extends TimerTask {
SimpleDateFormat date=new SimpleDateFormat(
"EEE, d MMM yyyy HH:mm:ss");
@Override
public void run() {
String date1=date.format(new Date());
l1.setText(date1);
}
}
}