Klassen Messwerte

Sebbe1993

Mitglied
Hallo Leute habe mal eine Anwendung gebastelt war eigentlich eine Übungsaufgabe aber vllt.
sind ja einige von euch Studenten oder ähnliches und können damit was anfangen :)

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.ArrayList;

import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Messreihe extends javax.swing.JFrame {
	private JButton jBLaden;
	private JButton jBSpeichern;
	private JButton jBExit;
	private JButton jBUebernehmen;
	private JTextField jTFMesswert;
	private JList jLMesswerte;
	private JScrollPane jScrollPane1;
	private JLabel jLListe;
	private JButton jBLeeren;
	private JLabel jLAktuellerMesswert;
	private int i=1;
	public DefaultListModel jLMesswerteModel = null;
	

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Messreihe inst = new Messreihe();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
				inst.setResizable(false);
			}
		});
	}
	
	public Messreihe() {
		super("Messwert Reihe");
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jLAktuellerMesswert = new JLabel();
				getContentPane().add(jLAktuellerMesswert);
				jLAktuellerMesswert.setText(i+".Messwert:");
				jLAktuellerMesswert.setBounds(12, 12, 78, 16);
			}
			{
				jTFMesswert = new JTextField();
				getContentPane().add(jTFMesswert);
				jTFMesswert.setBounds(12, 34, 134, 23);
				jTFMesswert.addKeyListener(new KeyAdapter() {
					public void keyPressed(KeyEvent evt) {
						jTFMesswertKeyPressed(evt);
					}
				});
			}
			{
				jBUebernehmen = new JButton();
				getContentPane().add(jBUebernehmen);
				jBUebernehmen.setText("Übernehmen");
				jBUebernehmen.setBounds(12, 63, 107, 23);
				jBUebernehmen.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jBUebernehmenActionPerformed(evt);
					}
				});
			}
			{
				jBExit = new JButton();
				getContentPane().add(jBExit);
				jBExit.setText("Ende");
				jBExit.setBounds(12, 254, 107, 23);
				jBExit.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jBExitActionPerformed(evt);
					}
				});
			}
			{
				jBSpeichern = new JButton();
				getContentPane().add(jBSpeichern);
				jBSpeichern.setText("Speichern");
				jBSpeichern.setBounds(179, 259, 94, 23);
				jBSpeichern.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jBSpeichernActionPerformed(evt);
					}
				});
			}
			{
				jBLaden = new JButton();
				getContentPane().add(jBLaden);
				jBLaden.setText("Laden");
				jBLaden.setBounds(284, 259, 86, 23);
				jBLaden.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jBLadenActionPerformed(evt);
					}
				});
			}
			{
				jScrollPane1 = new JScrollPane();
				getContentPane().add(jScrollPane1);
				jScrollPane1.setBounds(179, 34, 191, 220);
				{
					jLMesswerteModel = new DefaultListModel();
					jLMesswerte = new JList();
					jScrollPane1.setViewportView(jLMesswerte);
					jLMesswerte.setModel(jLMesswerteModel);
					jLMesswerte.setBounds(180, 37, 183, 210);
				}
			}
			{
				jBLeeren = new JButton();
				getContentPane().add(jBLeeren);
				jBLeeren.setText("Leeren");
				jBLeeren.setBounds(12, 220, 107, 23);
				jBLeeren.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jBLeerenActionPerformed(evt);
					}
				});
			}
			{
				jLListe = new JLabel();
				getContentPane().add(jLListe);
				jLListe.setText("Liste:");
				jLListe.setBounds(179, 12, 50, 16);
			}
			pack();
			this.setSize(397, 331);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	public void wertEintragen(){
		try{
		jLMesswerteModel.addElement(""+Double.parseDouble(jTFMesswert.getText())); 
		i++;
		jLAktuellerMesswert.setText(i+".Messwert:");
		jTFMesswert.requestFocus();
		jTFMesswert.selectAll();
		}catch(NumberFormatException n){
			JOptionPane.showMessageDialog(null, "Fehler bei der Eingabe!");
			jTFMesswert.requestFocus();
			jTFMesswert.selectAll();
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "Fehler! das sollte nicht Passieren!");
			System.exit(0);
		}
	}
	
	private void jTFMesswertKeyPressed(KeyEvent evt) {
		if(evt.getKeyCode() == KeyEvent.VK_ENTER){
			wertEintragen();
		}
	}
	
	private void jBUebernehmenActionPerformed(ActionEvent evt) {
		wertEintragen();
	}
	
	private void jBExitActionPerformed(ActionEvent evt) {
		System.exit(0);
	}
	
	private void jBSpeichernActionPerformed(ActionEvent evt) {
		JFileChooser fc = new JFileChooser();
		File selFile = null;
		BufferedWriter bw = null;
		FileWriter fw = null;
		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fc.setFileFilter(new FileNameExtensionFilter("*.mw", "mw"));
		int status = fc.showSaveDialog(null);
		if(status == JFileChooser.APPROVE_OPTION){
			try{
			selFile = new File(fc.getSelectedFile().toString()+".mw");
			fw = new FileWriter(selFile);
			bw = new BufferedWriter(fw);
			
			for(int i=0;i<jLMesswerteModel.getSize();i++){
				bw.write(jLMesswerteModel.get(i).toString());
				bw.newLine();
				
			}
			bw.close();
			}catch(IOException e){
				e.printStackTrace();
			}
				
			
		}else if(status == JFileChooser.CANCEL_OPTION){
			JOptionPane.showMessageDialog(null, "Speichern abgebrochen!");
		}
		
	}
	
	private void jBLadenActionPerformed(ActionEvent evt) {
		FileReader fr = null;
		BufferedReader br = null;
		File openFile = null;
		JFileChooser fc = new JFileChooser();
		fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
		fc.setFileFilter(new FileNameExtensionFilter("*.mw", "mw"));
		int status = fc.showOpenDialog(null);
		
		if(status == JFileChooser.APPROVE_OPTION){
			String messwertZeile;
			try{
				fr = new FileReader(fc.getSelectedFile().getAbsolutePath());
				br = new BufferedReader(fr);
				
				while((messwertZeile = br.readLine()) != null){
					jLMesswerteModel.addElement(messwertZeile);
				}
				i=jLMesswerteModel.getSize() +1;
				jLAktuellerMesswert.setText(i+".Messwert:");
				jTFMesswert.requestFocus();
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				if(br != null){
					try{
						br.close();
					}catch(Exception e){
						e.printStackTrace();
					}
				}
			}
			
		}
		
	}
	
	private void jBLeerenActionPerformed(ActionEvent evt) {
		try{
			jLMesswerteModel.clear();
			i=1;
			jLAktuellerMesswert.setText(i+".Messwert:");
			jTFMesswert.setText("");
			jTFMesswert.requestFocus();
			jTFMesswert.selectAll();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

Bin immer für Kritik und Verbesserungsvorschläge offen :)

MFG Sebastian
 

Phash

Top Contributor
Kritik:

JFrame sollte nicht extended werden, sondern als Member verwendet werden. ( http://www.java-forum.org/bilder-gu...t/141930-man-jframe-jdialog-erben-sollte.html )

Ansonsten solltest du noch GUI von Logik trennen.

Das heisst, bau dir (hier reicht eine) eine LogikKlasse, die dir die Fragen zur Bearbeitung deiner Probleme beantwortet.
Und in der GuiKlasse, verweist du nur auf die Logikklasse.
Am besten über ein Interface - dann kannst du die Logik jederzeit austauschen.
Das mag hier etwas übertrieben erscheinen, die Trennung macht aber spätestens bei einem etwas größeren Projekt schon Sinn.

Beispiel

Du möchtest Temperaturen berechnen, und hast einen Berechner für Celsius, einen für Fahrenheit und einen für Kelvin - evtl kommen noch mehr dazu.
Dann implementieren einfach alle das Berechnerinterface, und du kannst deine Oberfläche entscheiden lassen, welchen Berechner sie möchte.

Du kannst die Berechner dann auch einfacher testen.


Sonst noch Fragen?
 

Sebbe1993

Mitglied
Okay :D
Hätte vielleicht dabei schreiben sollen das ich blutiger Anfänger bin und im Moment nur meine Bücher durch arbeite ;)!

Und da kamen die meisten Sachen die du genannt hast noch nicht vor ! Auch wenn sie definitiv Sinn machen ;)

Vielen Dank für die Kritik und Vorschläge deiner Seits ;)


Sent from my iPhone using Tapatalk
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben