Swing Eingabe Erzwingen

somahu

Mitglied
Guten Tag,

Bitte ich brauch Hilfe wegen "String Eingabe erzwingen", ich hab überall gesucht und viel gefunden aber ich komm trotzdem damit nicht klar .. ich komme einfach auf den Trick nicht .. ich glaube dass es so einfach ist, aber ich komme einfach nicht drauf.

ich hab zwei JTextField Double Variable und JTextField ein String, ich probiere die ganze zeit dass wenn man auf den Calculate Button drückt und noch nicht die ganze JTextField eingaben geben hat dass dann einer Fehlermeldung raus komm , wie gesagt mit der Double Variable geht es super aber aber mit String geht es nicht.

Vielen Danke für eure Hilfe !! 🙂
Java:
package de.sbsapp.examples.geometriccalculator.view;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import de.sbsapp.examples.geometriccalculator.Document.DoubleCheckDocument;
import de.sbsapp.examples.geometriccalculator.model.Geometric;
import de.sbsapp.examples.geometriccalculator.model.Square;

public class InputSquare extends JDialog {
	private static final long serialVersionUID = 1L;
	private final JPanel contentPanel = new JPanel();
	private JTextField textField1;
	private JTextField textField2;
	private JTextField textField3;
	private JPanel pnlButton;;
	private Geometric a;

	public InputSquare(final Geometric a) throws ParseException {
		this.a = a;
		{
			setBounds(100, 100, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);
			textField1 = new JTextField();
			textField1.setEditable(true);
			textField1.setText("");
			textField1.setBounds(153, 52, 86, 20);
			contentPanel.add(textField1);
			textField1.setColumns(13);
			JLabel lblInputN = new JLabel("Name:");

			setBounds(150, 150, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);

			textField2 = new JTextField();
			textField2.setDocument(new DoubleCheckDocument(textField2));
			textField2.setText("12.10");
			textField2.setEditable(true);
			textField2.setText("");
			textField2.setBounds(153, 82, 86, 20);
			contentPanel.add(textField2);
			textField2.setColumns(13);
			JLabel lblInputA = new JLabel("Side A:");

			setBounds(100, 200, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);
			textField3 = new JTextField();
			textField3.setDocument(new DoubleCheckDocument(textField3));
			textField3.setText("12.10");
			textField3.setEditable(true);
			textField3.setText("");
			textField3.setBounds(153, 112, 86, 20);
			contentPanel.add(textField3);
			textField3.setColumns(13);
			JLabel lblInputB = new JLabel("Side B:");

			if (a instanceof Square) {
				lblInputN.setText("Name:");
				lblInputA.setText("Side A:");
				lblInputB.setText("Side B:");

			}

			lblInputN.setBounds(97, 52, 52, 14);
			contentPanel.add(lblInputN);

			lblInputA.setBounds(97, 82, 52, 14);
			contentPanel.add(lblInputA);

			lblInputB.setBounds(97, 112, 52, 14);
			contentPanel.add(lblInputB);
		}

		{

			pnlButton = new JPanel(new GridLayout(1, 2));
			pnlButton.setLayout(new FlowLayout(FlowLayout.CENTER));
			getContentPane().add(pnlButton, BorderLayout.SOUTH);

			JButton btnButtonCalculate = new JButton("Calculate");
			JButton btnButtonBack = new JButton("Back");

			pnlButton.add(btnButtonCalculate);
			pnlButton.add(btnButtonBack);

			btnButtonCalculate.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					try {
						double nosideA, nosideB;
						String textField1 = null;

						nosideA = Double.parseDouble(textField2.getText());
						nosideB = Double.parseDouble(textField3.getText());

						if ((nosideA < 0) && (nosideA < 1000) && (nosideB < 0)
								&& (nosideB < 1000)) {

							computeAndClose();
						}

						else if (equals(textField1) == false) {

							computeAndClose();

						}
					} catch (Exception g) {
						JOptionPane.showMessageDialog(contentPanel,
								"Eggs are not supposed to be green.",
								"Inane warning", JOptionPane.WARNING_MESSAGE);

					}

				}

			});
			btnButtonBack.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					setVisible(false);
					dispose();
				}
			});

		}

	}

	private void computeAndClose() {

		((Square) a).setName(String.valueOf(textField1.getText()));
		this.setVisible(false);
		this.dispose();

		((Square) a).setX(Double.parseDouble(textField2.getText()));
		this.setVisible(false);
		this.dispose();

		((Square) a).setY(Double.parseDouble(textField3.getText()));
		this.setVisible(false);
		this.dispose();

	}

}
 
ich danke dir vielmals.
ich hab noch nur ein Problem mit der Row´s.
das Programm erstellt automatisch row´s als neue Objeckte und ich will dass wenn mann auf den "Back" Button in InputSquare drückt, dass diese neue row sich wieder löscht.
gibt es irgendwie so eine Möglichkeit 🙂 ..!!! ich hab mir irgendwas mit If() gedacht, dass ich so sag wenn den Calculate Button gedrückt wird, dass dann diese row´s hergestellt werden , aber weiss´s nicht es klappt einfach nicht.
danke für die mühe und die Hilfe.

Java:
package de.sbsapp.examples.geometriccalculator.main;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import de.sbsapp.examples.geometriccalculator.model.Circle;
import de.sbsapp.examples.geometriccalculator.model.Square;
import de.sbsapp.examples.geometriccalculator.model.Triangle;
import de.sbsapp.examples.geometriccalculator.view.InputCircle;
import de.sbsapp.examples.geometriccalculator.view.InputSquare;
import de.sbsapp.examples.geometriccalculator.view.InputTriangle;

public class GeomFrame {
	private JFrame frame;
	private JLabel lblResultA;
	private JLabel lblResultP;
	private JLabel lblName;
	private JPanel pnlButton;
	private JPanel pnlTable;
	private JPanel pnlExit;
	private JTable tblResults;
	public DefaultTableModel model;

	// private JTable tblResults;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GeomFrame window = new GeomFrame();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public GeomFrame() {
		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(new FlowLayout());
		// pnlTable.setBackground(new Color(50, 50, 50));

		pnlTable = new JPanel();
		pnlTable.setBounds(190, 120, 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");
		// ////////

		DefaultTableModel model = new DefaultTableModel();

		tblResults = new JTable();
		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);
		// pnlTable.add(tblResults);

		frame.add(pnlButton);
		frame.add(pnlTable);
		frame.add(pnlExit);

		btnButtonExit.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent exit) {
				System.exit(0);

			}

		});

		btnButtonCircle.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				try {
					openInputCircle();
				} catch (ParseException e) {

					e.printStackTrace();
				}
			}
		});
		btnButtonSquare.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					openInputSquare();
				} catch (ParseException e) {

					e.printStackTrace();
				}
			}
		});
		btnButtonTriangle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					openInputTriangle();
				} catch (ParseException e) {

					e.printStackTrace();
				}
			}
		});

		lblResultA = new JLabel("Result Area: ");
		lblResultA.setBounds(20, 114, 300, 14);
		frame.getContentPane().add(lblResultA);

		lblResultP = new JLabel("Result Perimeter: ");
		lblResultP.setBounds(20, 144, 300, 14);
		frame.getContentPane().add(lblResultP);

		lblName = new JLabel("Name: ");
		lblName.setBounds(20, 172, 300, 14);
		frame.getContentPane().add(lblName);

	}

	public JLabel getLblResultA() {
		return lblResultA;
	}

	public void setLblResultA(JLabel lblResultA) {
		this.lblResultA = lblResultA;
	}

	public JLabel getLblResultP() {
		return lblResultP;
	}

	public void setLblResultP(JLabel lblResultP) {
		this.lblResultP = lblResultP;
	}

	public JLabel getLblName() {
		return lblName;
	}

	public void setLblName(JLabel lblName) {
		this.lblName = lblName;
	}

	private void openInputCircle() throws ParseException {
		Circle c = new Circle();
		InputCircle InputCircle = new InputCircle(c);
		InputCircle.setModal(true);
		InputCircle.setVisible(true);
		lblResultA.setText(String.format("RESULT Area = %f", c.computeArea()));
		lblResultP.setText(String.format("RESULT Perimeter= %f",
				c.computePerimeter()));
		lblName.setText(String.format("Name: " + c.getName()));
		
		((DefaultTableModel) tblResults.getModel()).addRow(new Object[] {
				c.getName(), c.computeArea(), c.computePerimeter() });
	}
		
	


	private void openInputSquare() throws ParseException {
		Square a = new Square();
		InputSquare InputSquare = new InputSquare(a);
		InputSquare.setModal(true);
		InputSquare.setVisible(true);
		lblResultA.setText(String.format("RESULT Area = %f", a.computeArea()));
		lblResultP.setText(String.format("RESULT Perimeter = %f",
				a.computePerimeter()));
		lblName.setText(String.format("Name: " + a.getName()));
                ((DefaultTableModel) tblResults.getModel()).addRow(new Object[] {
				c.getName(), c.computeArea(), c.computePerimeter() });

	}

	private void openInputTriangle() throws ParseException {
		Triangle k = new Triangle();
		InputTriangle InputTriangle = new InputTriangle(k);
		InputTriangle.setModal(true);
		InputTriangle.setVisible(true);
		lblResultA.setText(String.format("RESULT Area = %f", k.computeArea()));
		lblResultP.setText(String.format("RESULT Perimeter = %f",
				k.computePerimeter()));
		lblName.setText(String.format("Name: " + k.getName()));
		((DefaultTableModel) tblResults.getModel()).addRow(new Object[] {
				k.getName(), k.computeArea(), k.computePerimeter() });
	}
}

Java:
package de.sbsapp.examples.geometriccalculator.view;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import de.sbsapp.examples.geometriccalculator.Document.DoubleCheckDocument;
import de.sbsapp.examples.geometriccalculator.model.Geometric;
import de.sbsapp.examples.geometriccalculator.model.Square;

public class InputSquare extends JDialog {
	private static final long serialVersionUID = 1L;
	private final JPanel contentPanel = new JPanel();
	private JTextField textField1;
	private JTextField textField2;
	private JTextField textField3;
	private JPanel pnlButton;;
	private Geometric a;

	public InputSquare(final Geometric a) throws ParseException {
		this.a = a;
		{
			setBounds(100, 100, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);
			textField1 = new JTextField();
			textField1.setEditable(true);
			textField1.setText("");
			textField1.setBounds(153, 52, 86, 20);
			contentPanel.add(textField1);
			textField1.setColumns(13);
			JLabel lblInputN = new JLabel("Name:");

			setBounds(150, 150, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);

			textField2 = new JTextField();
			textField2.setDocument(new DoubleCheckDocument(textField2));
			textField2.setText("12.10");
			textField2.setEditable(true);
			textField2.setText("");
			textField2.setBounds(153, 82, 86, 20);
			contentPanel.add(textField2);
			textField2.setColumns(13);
			JLabel lblInputA = new JLabel("Side A:");

			setBounds(100, 200, 450, 300);
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
			getContentPane().add(contentPanel, BorderLayout.CENTER);
			contentPanel.setLayout(null);
			textField3 = new JTextField();
			textField3.setDocument(new DoubleCheckDocument(textField3));
			textField3.setText("12.10");
			textField3.setEditable(true);
			textField3.setText("");
			textField3.setBounds(153, 112, 86, 20);
			contentPanel.add(textField3);
			textField3.setColumns(13);
			JLabel lblInputB = new JLabel("Side B:");

			if (a instanceof Square) {
				lblInputN.setText("Name:");
				lblInputA.setText("Side A:");
				lblInputB.setText("Side B:");

			}

			lblInputN.setBounds(97, 52, 52, 14);
			contentPanel.add(lblInputN);

			lblInputA.setBounds(97, 82, 52, 14);
			contentPanel.add(lblInputA);

			lblInputB.setBounds(97, 112, 52, 14);
			contentPanel.add(lblInputB);
		}

		{

			pnlButton = new JPanel(new GridLayout(1, 2));
			pnlButton.setLayout(new FlowLayout(FlowLayout.CENTER));
			getContentPane().add(pnlButton, BorderLayout.SOUTH);

			JButton btnButtonCalculate = new JButton("Calculate");
			JButton btnButtonBack = new JButton("Back");

			pnlButton.add(btnButtonCalculate);
			pnlButton.add(btnButtonBack);

			btnButtonCalculate.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					try {
						double nosideA, nosideB;

						nosideA = Double.parseDouble(textField2.getText());
						nosideB = Double.parseDouble(textField3.getText());

						if ((nosideA < 0) && (nosideA < 1000) && (nosideB < 0)
								&& (nosideB < 1000)) {
						}
						if (textField1.getText().trim().length() == 0) {
							JOptionPane.showMessageDialog(contentPanel,
									"Eggs are not supposed to be green.",
									"Inane warning",
									JOptionPane.WARNING_MESSAGE);
							return;
						}
						{
									
							computeAndClose();
							

						}
					} catch (Exception g) {
						JOptionPane.showMessageDialog(contentPanel,
								"Eggs are not supposed to be green.",
								"Inane warning", JOptionPane.WARNING_MESSAGE);

					}

				}

			});
			btnButtonBack.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					{		
					setVisible(false);
					dispose();
					return;
					 }
				}
			
				
			});

		}

	}

	private void computeAndClose() {

		((Square) a).setName(String.valueOf(textField1.getText()));
		this.setVisible(false);
		this.dispose();

		((Square) a).setX(Double.parseDouble(textField2.getText()));
		this.setVisible(false);
		this.dispose();

		((Square) a).setY(Double.parseDouble(textField3.getText()));
		this.setVisible(false);
		this.dispose();

	}

}

danke noch mal
 
Zuletzt bearbeitet:
Ja, schon beim ersten post war es viel zu viel code für ein viel zu kleines Problem. WENN schon viel Code, dann compilierbaren, den man sofort testen kann. Beschreib' mal konkret, was du willst. Aus einer JTable eine row entfernen?
 

Zurück
Oben