Auswahl mehrerer JComboBoxen verknüpfne

RedVelvet

Mitglied
Moin!

Ich versuche eine GUI zu erstellen, die je nach Eingabe als Lösung einer von 3 Möglichkeiten ausgibt. Dazu müssen die Ergebnisse von mehreren JComboBoxen (4) und JTextFields verknüpft werden. Kann mir da jemand sagen wie ich das mache? Und zusätzlich möchte ich das ein Ergebniss erst erscheint wenn alles ausgewählt / eingegeben wurde.

Sorry bin hier ziemlicher Anfänger und weiß langsam nicht mehr nach was ich googlen soll

Java:
package de.jade.kursarbeit;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import de.jade.kursarbeit.ComboBoxListeners.ListObject;

import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class JFrame extends javax.swing.JFrame {

    private JPanel contentPane;
    private JTextField OwnPositionLatD;
    private JTextField POILatD;
    private JTextField OwnPositionLongD;
    private JTextField POILongD;
    private JTextField STimeIncident;
    private JTextField STime;

    private JTextPane txtPaneSAR;

    private String[] VesselsString = { "Number of Vessels involved", "1", "2", "3", "4", "5", "more than 5" };

    private String[] SO = { "Search Object", "Person in water", "4-Person liferaft", "6-Person liferaft",
            "15-Person liferaft", "25-Person liferaft", "Boat >5m", "Boat 7m", "Boat 12m", "Boat 24m" };

    private String[] WindSpeed = { "Wind", "Wind < 15kn", "Wind > 15kn" };

    private String[] Visi = { "Visibility", "3nm", "5nm", "10nm", "15nm", "20nm" };

    private String[] Lat = { "N", "S" };

    private String[] Long = { "E", "W" };
    private JTextField OwnPositionLatM;
    private JTextField POILatM;
    private JTextField OwnPositionLongM;
    private JTextField POILongM;
    int LatDOwn, LatMOwn, LatOwn, LongDOwn, LongMOwn, LongOwn, LatDPOI, LatMPOI, LatPOI, LongDPOI, LongMPOI, LongPOI,
            TimeInci, TimeNow;

    public JFrame() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 630, 477);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblOwnPosition = new JLabel("Own Position");
        lblOwnPosition.setBounds(30, 31, 102, 30);
        contentPane.add(lblOwnPosition);

        OwnPositionLatD = new JTextField();
        OwnPositionLatD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
                if (LatDOwn > 90) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");
                }
            }
        });
        OwnPositionLatD.setBounds(156, 35, 37, 22);
        contentPane.add(OwnPositionLatD);
        OwnPositionLatD.setColumns(10);

        OwnPositionLatM = new JTextField();
        OwnPositionLatM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
                if (LatMOwn > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatM.setText("");

                }
            }
        });

        OwnPositionLatM.setColumns(10);
        OwnPositionLatM.setBounds(235, 35, 37, 22);
        contentPane.add(OwnPositionLatM);

        JComboBox N_S = new JComboBox(Lat);
        N_S.setBounds(314, 35, 44, 22);
        contentPane.add(N_S);

        OwnPositionLongD = new JTextField();
        OwnPositionLongD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
                if (LongDOwn > 180) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        OwnPositionLongD.setBounds(384, 35, 37, 22);
        contentPane.add(OwnPositionLongD);
        OwnPositionLongD.setColumns(10);

        OwnPositionLongM = new JTextField();
        OwnPositionLongM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
                if (LongMOwn > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        OwnPositionLongM.setColumns(10);
        OwnPositionLongM.setBounds(467, 35, 37, 22);
        contentPane.add(OwnPositionLongM);

        JComboBox E_W = new JComboBox(Long);
        E_W.setBounds(547, 35, 44, 22);
        contentPane.add(E_W);

        
        JLabel lblPositionOfIncident = new JLabel("Position of Incident");
        lblPositionOfIncident.setBounds(30, 77, 135, 16);
        contentPane.add(lblPositionOfIncident);

        POILatD = new JTextField();
        POILatD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDPOI = Integer.parseInt(POILatD.getText());
                if (LatDPOI > 90) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");
                }
            }
        });
        POILatD.setBounds(156, 74, 37, 22);
        contentPane.add(POILatD);
        POILatD.setColumns(10);

        POILatM = new JTextField();
        POILatM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatMPOI = Integer.parseInt(POILatM.getText());
                if (LatMPOI > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILatM.setColumns(10);
        POILatM.setBounds(235, 74, 37, 22);
        contentPane.add(POILatM);

        JComboBox N_SPOI = new JComboBox(Lat);
        N_SPOI.setBounds(314, 74, 44, 22);
        contentPane.add(N_SPOI);

        POILongD = new JTextField();
        POILongD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongDPOI = Integer.parseInt(POILongD.getText());
                if (LongDPOI > 180) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILongD.setBounds(384, 74, 37, 22);
        contentPane.add(POILongD);
        POILongD.setColumns(10);

        POILongM = new JTextField();
        POILongM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongMPOI = Integer.parseInt(POILongM.getText());
                if (LongMPOI > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILongM.setColumns(10);
        POILongM.setBounds(467, 74, 37, 22);
        contentPane.add(POILongM);

            
        JComboBox E_WPOI = new JComboBox(Long);
        E_WPOI.setBounds(547, 74, 44, 22);
        contentPane.add(E_WPOI);

        JLabel lblShipTimeIncident = new JLabel("Time of Incident UTC");
        lblShipTimeIncident.setBounds(30, 127, 135, 16);
        contentPane.add(lblShipTimeIncident);

        STimeIncident = new JTextField();
        STimeIncident.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TimeInci = Integer.parseInt(STimeIncident.getText());

            }
        });
        STimeIncident.setBounds(156, 124, 116, 22);
        contentPane.add(STimeIncident);
        STimeIncident.setColumns(10);

        JLabel lblShipTime = new JLabel("Time now UTC");
        lblShipTime.setBounds(326, 127, 85, 16);
        contentPane.add(lblShipTime);

        STime = new JTextField();
        STime.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TimeNow = Integer.parseInt(STime.getText());
            }
        });
        STime.setBounds(423, 124, 116, 22);
        contentPane.add(STime);
        STime.setColumns(10);

        JComboBox Visibility = new JComboBox(Visi);
        Visibility.setBounds(427, 254, 135, 22);
        contentPane.add(Visibility);

        JComboBox SearchObject = new JComboBox(SO);
        SearchObject.setBounds(427, 184, 135, 22);
        contentPane.add(SearchObject);

        JComboBox Wind = new JComboBox(WindSpeed);
    /*    Wind.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                
                String selectedWind = (String) Wind.getSelectedItem();
                if (selectedWind.equals("Wind > 15kn")) {
                    txtPaneSAR.setText("Expanding Search Square");
                }
            }
        });*/
        Wind.setBounds(111, 184, 87, 22);
        contentPane.add(Wind);

        JComboBox Vessels = new JComboBox(VesselsString);
        Vessels.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent event) {

                String selectedItem = (String) Vessels.getSelectedItem();

                if (selectedItem.equals("2")) {
                    txtPaneSAR.setText("Parallel Track Pattern 2");
                } else if (selectedItem.equals("3")) {
                    txtPaneSAR.setText("Parallel Track Pattern 3");
                } else if (selectedItem.equals("4")) {
                    txtPaneSAR.setText("Parallel Track Pattern 4");
                } else if (selectedItem.equals("5")) {
                    txtPaneSAR.setText("Parallel Track Pattern 5");
                } else if (selectedItem.equals("more than 5")) {
                    txtPaneSAR.setText("Parallel Track Pattern 5");
                }
            }
        });

        Vessels.setBounds(69, 254, 184, 22);
        contentPane.add(Vessels);

        JLabel lblSearchPattern = new JLabel("Recommended Search Pattern");
        lblSearchPattern.setBounds(30, 343, 194, 16);
        contentPane.add(lblSearchPattern);

        txtPaneSAR = new JTextPane();
        txtPaneSAR.setBounds(271, 343, 223, 22);
        contentPane.add(txtPaneSAR);

        JLabel lblDegree1 = new JLabel("°");
        lblDegree1.setBounds(203, 38, 23, 16);
        contentPane.add(lblDegree1);

        JLabel lblDegree3 = new JLabel("°");
        lblDegree3.setBounds(205, 77, 23, 16);
        contentPane.add(lblDegree3);

        JLabel lblDegree2 = new JLabel("°");
        lblDegree2.setBounds(432, 38, 23, 16);
        contentPane.add(lblDegree2);

        JLabel lblDegree4 = new JLabel("°");
        lblDegree4.setBounds(432, 77, 23, 16);
        contentPane.add(lblDegree4);

        JLabel lblMinute2 = new JLabel("´");
        lblMinute2.setBounds(512, 38, 23, 16);
        contentPane.add(lblMinute2);

        JLabel lblMinute4 = new JLabel("´");
        lblMinute4.setBounds(512, 77, 23, 16);
        contentPane.add(lblMinute4);

        JLabel lblMinute1 = new JLabel("´");
        lblMinute1.setBounds(279, 38, 23, 16);
        contentPane.add(lblMinute1);

        JLabel lblMinute3 = new JLabel("´");
        lblMinute3.setBounds(279, 77, 23, 16);
        contentPane.add(lblMinute3);

        
        
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    JFrame frame = new JFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    
}
 
ich würde dir gerne helfen, weiß aber nicht genau was du machen willst. Du hast oben mehrere Textfelder, welche davon soll benutzt werden, und wie genau sollen die Ergebnisse verknüpft werden, hängen die von einander ab? Wäre gut wenn du das genau spezifizierst, dann helf ich dir gerne 😛
 
Ok, also mit dem Textfeldern bin ich momentan am arbeiten. Da sollen am Ende 2 Werte rauskommen, Distanz in Seemeilen und Zeitunterschied. Diese Ergebnisse möchte ich nun mit den ausgewählten Items der JComboBoxen verknüpfen damit ich auf 1 Ergebniss komme. Z.B. wenn die Distanz und der Zeitunterschied klein ist (muss ich noch definieren) dazu wenig Wind herrscht, die Sicht gut ist, nur ein Fahrzeug dabei ist und es eine person im Wasser ist kommt genau 1 Ergebniss raus. Und dann natürlich bei anderen Kombinationen soll ein anderes Ergebniss rauskommen und im txtPaneSAR ausgegeben werden. Weiß aber nicht wie ich es alles so verknüpfe das ich die ausgewählten Items der JComboBox in ein (mehrere) if statements bekomme. Bin momentan auch schon soweit, dass ich für die "Recommended Search Pattern" (vor dem txtPaneSAR) ein Button eingefügt habe, damit beim auswählen des Buttons ein Ergebniss ausgegeben werden kann....
Dafür hier mein neuer Code (bin immer noch am arbeiten der Verarbeitung der Textfelder also nicht wundern)
package de.jade.kursarbeit;
Java:
import java.awt.EventQueue;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class JFrame extends javax.swing.JFrame {

	private JPanel contentPane;
	private JTextField OwnPositionLatD;
	private JTextField POILatD;
	private JTextField OwnPositionLongD;
	private JTextField POILongD;
	private JTextField STimeIncident;
	private JTextField STime;

	private JTextPane txtPaneSAR;

	private String[] VesselsString = { "Number of Vessels involved", "1", "2", "3", "4", "5", "more than 5" };

	private String[] SO = { "Search Object", "Person in water", "4-Person liferaft", "6-Person liferaft",
			"15-Person liferaft", "25-Person liferaft", "Boat < 5m", "Boat 7m", "Boat 12m", "Boat 24m" };

	private String[] WindSpeed = { "Wind speed", "0-15kn", "15-25kn", "Wind > 25kn" };
	private String[] Visi = { "Visibility", "3nm", "5nm", "10nm", "15nm", "20nm" };
	private String[] Lat = { "N", "S" };
	private String[] Long = { "E", "W" };	
	private String [] CurrentString = {"Current speed", "0-1kn", "1-2kn"};
	private String [] WindDirection = {"Wind Direction", "N", "NE", "E", "SE", "S", "SW", "W", "NW"};
	private String [] CurrentDirection = {"Current Direction", "N", "NE", "E", "SE", "S", "SW", "W", "NW"};

	private JTextField OwnPositionLatM;
	private JTextField POILatM;
	private JTextField OwnPositionLongM;
	private JTextField POILongM;
	int TimeInci, TimeNow;
	double LatDPOI, LatMPOI, LatPOI, LongDPOI, LongMPOI, LongPOI, LatDOwn, LatMOwn, LatOwn, LongDOwn, LongMOwn, LongOwn,
			LatMin, LongMin, PLatMin, PLongMin, PLatOwn, PLongOwn, a, b, l, Mittelbreite, d, a_quad, b_quad;

	public JFrame() {

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 630, 477);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblOwnPosition = new JLabel("Own Position");
		lblOwnPosition.setBounds(30, 31, 102, 30);
		contentPane.add(lblOwnPosition);

		OwnPositionLatD = new JTextField();
		OwnPositionLatD.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
				if (LatDOwn > 90) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");
				}
			}
		});
		OwnPositionLatD.setBounds(156, 35, 37, 22);
		contentPane.add(OwnPositionLatD);
		OwnPositionLatD.setColumns(10);

		OwnPositionLatM = new JTextField();
		OwnPositionLatM.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
				if (LatMOwn > 60) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatM.setText("");

				}
			}
		});

		OwnPositionLatM.setColumns(10);
		OwnPositionLatM.setBounds(235, 35, 37, 22);
		contentPane.add(OwnPositionLatM);

		JComboBox N_S = new JComboBox(Lat);
		N_S.setBounds(314, 35, 44, 22);
		contentPane.add(N_S);

		OwnPositionLongD = new JTextField();
		OwnPositionLongD.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
				if (LongDOwn > 180) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");

				}
			}
		});
		OwnPositionLongD.setBounds(384, 35, 37, 22);
		contentPane.add(OwnPositionLongD);
		OwnPositionLongD.setColumns(10);

		OwnPositionLongM = new JTextField();
		OwnPositionLongM.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
				if (LongMOwn > 60) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");

				}
			}
		});
		OwnPositionLongM.setColumns(10);
		OwnPositionLongM.setBounds(467, 35, 37, 22);
		contentPane.add(OwnPositionLongM);

		JComboBox E_W = new JComboBox(Long);
		E_W.setBounds(547, 35, 44, 22);
		contentPane.add(E_W);

		JLabel lblPositionOfIncident = new JLabel("Position of Incident");
		lblPositionOfIncident.setBounds(30, 77, 135, 16);
		contentPane.add(lblPositionOfIncident);

		POILatD = new JTextField();
		POILatD.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LatDPOI = Integer.parseInt(POILatD.getText());
				if (LatDPOI > 90) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");
				}
			}
		});
		POILatD.setBounds(156, 74, 37, 22);
		contentPane.add(POILatD);
		POILatD.setColumns(10);

		POILatM = new JTextField();
		POILatM.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LatMPOI = Integer.parseInt(POILatM.getText());
				if (LatMPOI > 60) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");

				}
			}
		});
		POILatM.setColumns(10);
		POILatM.setBounds(235, 74, 37, 22);
		contentPane.add(POILatM);

		JComboBox N_SPOI = new JComboBox(Lat);
		N_SPOI.setBounds(314, 74, 44, 22);
		contentPane.add(N_SPOI);

		POILongD = new JTextField();
		POILongD.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LongDPOI = Integer.parseInt(POILongD.getText());
				if (LongDPOI > 180) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");

				}
			}
		});
		POILongD.setBounds(384, 74, 37, 22);
		contentPane.add(POILongD);
		POILongD.setColumns(10);

		POILongM = new JTextField();
		POILongM.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LongMPOI = Integer.parseInt(POILongM.getText());
				if (LongMPOI > 60) {
					JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
							JOptionPane.INFORMATION_MESSAGE);

					OwnPositionLatD.setText("");

				}
			}
		});
		POILongM.setColumns(10);
		POILongM.setBounds(467, 74, 37, 22);
		contentPane.add(POILongM);

		JComboBox E_WPOI = new JComboBox(Long);
		E_WPOI.setBounds(547, 74, 44, 22);
		contentPane.add(E_WPOI);

		JLabel lblShipTimeIncident = new JLabel("Time of Incident UTC");
		lblShipTimeIncident.setBounds(30, 127, 135, 16);
		contentPane.add(lblShipTimeIncident);

		STimeIncident = new JTextField();
		STimeIncident.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				TimeInci = Integer.parseInt(STimeIncident.getText());

			}
		});
		STimeIncident.setBounds(156, 124, 116, 22);
		contentPane.add(STimeIncident);
		STimeIncident.setColumns(10);

		JLabel lblShipTime = new JLabel("Time now UTC");
		lblShipTime.setBounds(326, 127, 85, 16);
		contentPane.add(lblShipTime);

		STime = new JTextField();
		STime.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				TimeNow = Integer.parseInt(STime.getText());
			}
		});
		STime.setBounds(423, 124, 116, 22);
		contentPane.add(STime);
		STime.setColumns(10);
			
		
		JComboBox WindD = new JComboBox(WindDirection);
		WindD.setBounds(156, 184, 116, 22);
		contentPane.add(WindD);
		
		JComboBox CurrentS = new JComboBox(CurrentString);
		CurrentS.setBounds(301, 184, 110, 22);
		contentPane.add(CurrentS);
		
		JComboBox CurrentD = new JComboBox(CurrentDirection);
		CurrentD.setBounds(444, 184, 135, 22);
		contentPane.add(CurrentD);
		
		JComboBox WindS = new JComboBox(WindSpeed);
		/*
		 * Wind.addActionListener(new ActionListener() { public void
		 * actionPerformed(ActionEvent e) {
		 * 
		 * String selectedWind = (String) Wind.getSelectedItem(); if
		 * (selectedWind.equals("Wind > 15kn")) {
		 * txtPaneSAR.setText("Expanding Search Square"); } } });
		 */
		WindS.setBounds(30, 184, 102, 22);
		contentPane.add(WindS);

		JComboBox Vessels = new JComboBox(VesselsString);
		Vessels.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent event) {

				String selectedItem = (String) Vessels.getSelectedItem();

				if (selectedItem.equals("2")) {
					txtPaneSAR.setText("Parallel Track Pattern 2");
				} else if (selectedItem.equals("3")) {
					txtPaneSAR.setText("Parallel Track Pattern 3");
				} else if (selectedItem.equals("4")) {
					txtPaneSAR.setText("Parallel Track Pattern 4");
				} else if (selectedItem.equals("5")) {
					txtPaneSAR.setText("Parallel Track Pattern 5");
				} else if (selectedItem.equals("more than 5")) {
					txtPaneSAR.setText("Parallel Track Pattern 5");
				}
			}
		});

		Vessels.setBounds(30, 254, 184, 22);
		contentPane.add(Vessels);
	
		JComboBox Visibility = new JComboBox(Visi);
		Visibility.setBounds(444, 254, 135, 22);
		contentPane.add(Visibility);

		JComboBox SearchObject = new JComboBox(SO);
		SearchObject.setBounds(260, 254, 135, 22);
		contentPane.add(SearchObject);
		
		txtPaneSAR = new JTextPane();
		txtPaneSAR.setBounds(271, 343, 223, 22);
		contentPane.add(txtPaneSAR);

		JLabel lblDegree1 = new JLabel("°");
		lblDegree1.setBounds(203, 38, 23, 16);
		contentPane.add(lblDegree1);

		JLabel lblDegree3 = new JLabel("°");
		lblDegree3.setBounds(205, 77, 23, 16);
		contentPane.add(lblDegree3);

		JLabel lblDegree2 = new JLabel("°");
		lblDegree2.setBounds(432, 38, 23, 16);
		contentPane.add(lblDegree2);

		JLabel lblDegree4 = new JLabel("°");
		lblDegree4.setBounds(432, 77, 23, 16);
		contentPane.add(lblDegree4);

		JLabel lblMinute2 = new JLabel("´");
		lblMinute2.setBounds(512, 38, 23, 16);
		contentPane.add(lblMinute2);

		JLabel lblMinute4 = new JLabel("´");
		lblMinute4.setBounds(512, 77, 23, 16);
		contentPane.add(lblMinute4);

		JLabel lblMinute1 = new JLabel("´");
		lblMinute1.setBounds(279, 38, 23, 16);
		contentPane.add(lblMinute1);

		JLabel lblMinute3 = new JLabel("´");
		lblMinute3.setBounds(279, 77, 23, 16);
		contentPane.add(lblMinute3);

		JButton btnNewButton = new JButton("Recommended Search Pattern");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
				LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
				LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
				LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
				LatMin = LatMOwn / 60;
				LongMin = LongMOwn / 60;

				LatOwn = LatDOwn + LatMin;
				LongOwn = LongDOwn + LongMin;
				
				LatDPOI = Integer.parseInt(POILatD.getText());
				LatMPOI = Integer.parseInt(POILatM.getText());
				LongDPOI = Integer.parseInt(POILongD.getText());
				LongMPOI = Integer.parseInt(POILongM.getText());
				PLatMin = LatMPOI /60;
				PLongMin = LongMPOI / 60;
				
				PLatOwn = LatDPOI + PLatMin;
				PLongOwn = LongDPOI + PLongMin;
				
				 b = (LatOwn - PLatOwn)*60;
				 l = (LongOwn - PLongOwn)*60;
				 
				 Mittelbreite = 1/2 * (LatOwn + PLatOwn);
				 a = l * Math.cos(Mittelbreite);
				
				 a_quad = Math.pow(a, 2);
				 b_quad = Math.pow(b,2);
				 
				 d = Math.sqrt(a_quad +b_quad);

				 // if ( d > ) {
				 //} 
				 
			}
			
		});
		btnNewButton.setBounds(24, 343, 229, 25);
		contentPane.add(btnNewButton);
		
		JTextPane textPaneDatum = new JTextPane();
		textPaneDatum.setBounds(271, 395, 223, 22);
		contentPane.add(textPaneDatum);
		
		JButton btnDatum = new JButton("Datum (for search area)");
		btnDatum.setBounds(24, 395, 229, 25);
		contentPane.add(btnDatum);
		
			

	}

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JFrame frame = new JFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
}
[code]
 
also es gibt 2 Möglichkeiten dies zu machen:
  • Du definierst eine Button, wenn der Benutzer alle Eingaben getätigt hat, dann drückt er auf den Button (hier definierst du die ActionPerformed des Buttons) und holst dir dort die Daten der ComboBoxen (getSelectedItem() oder getSelectedIndex()) und des Textfeldes (getText()). Um dann dein TxtPane den Text zu setzen nimmst du if-Abfragen (die Bedingungen kannst du ja mit || oder && verknüpfen), wo die Bedingungen überprüft werden. (Diese Variante würde ich dir empfehlen, ist weniger Schreibarbeit)
  • Wenn du keinen Button haben willst, dann musst du es umständlich machen. Du fügst jeder Combobox ein ItemChanged Event hinzu, das ausgelöst wird, wenn der Wert der Combobox verändert wird, bei dem Textfeld musst du eine KeyTyped oder Mouseclicked Event nehmen. Dann überprüfst du in jedem dieser Events, ob die Eingabe der anderen Elemente schon erfolgt ist und wenn dies der fall ist, dann wie beim ersten Punkt machst du die if-Abfragen und setzt so den Text des TxtPane.
Ich würde dir den Ersten Punkt empfehlen.
Hoffe ich konnte dir helfen, falls du eine Beispielcode haben willst, brauch ich genau die Werte der Comboboxen und welche Bedingungen erfüllt werden müssen. Für die Bedingung Zeitunterschied und Distanz gering musst du dir eine extra Hilfsmethode (Rückgabetyp boolean) schreiben, wo du definierst, für welche Werte der Combobox er klein ist und für welche Werte nicht. Diese kannst du dann bequem in dein if einbauen.
Wenn du die Methode getSeletedItem().toString() verwendest, bekommst du einen String raus, falls du aber es als zahl brauchst, dann muss du den String noch casten, z.B. mit Integer.valueof(String) oder Double.valueof(String).

Überprüfen, ob die distanz gering ist, könnte so aussehen:
[CODE lang="java" title="Hilfsmethoden Distanz gering"]public boolean distanzGering()
{
int item = Double.valueof(combobox.getSelectedItem().toString());
if (item < 20)
{
return true;
}
else
{
return false;
}
}[/CODE]

Diese kannst du dann bequem in der oberen Methode aufrufen:

[CODE lang="java" title="Beispiel"]public void txtPaneTextSetzen()
{
if (distanzGering() && combobox1.getSeletedItem().toString().equals("1 Person") && anzahlFahrzeuge.getSeletedItem().toString().equals("1"))
{
txtPaneSAR.setText("Bedingung erfüllt");
}
else if (...)
}[/CODE]

und die Methode txtPaneTextSetzen() rufst du dann einfach in der ActionPerformed deines Buttons auf.
Dasselbe könntest du beim zweiten machen, müsstest aber hier in der Methode am Anfang noch überprüfen, ob alle Eingaben schon getätigt wurden
 
Zuletzt bearbeitet:
Super vielen Dank, ich werde versuchen mich da heute ran zusetzen. Es klingt alles auf jeden Fall erstmal logisch und ich denke ich werde es über einen Button machen. Klingt sehr viel einfacher 😁
 
Hey!

Also ich hab das jetzt mal mit einer einfachen Sache ausprobiert und beim ausführen wirft er mir aber ein Fehler raus, den ich nicht identifizieren kann. Vielleicht kannst du mir ja nochmal helfen...
Ich habe jetzt einen Teil den ich vorher als action performed unter der JComboBox hatte, im if-statement unter den Button verschoben (if statement war vorher genau das selbe). Wenn ich jetzt eine Option auf der JComboBox auswähle und auf den JButton drücke kommt halt die Fehlermeldung.

Code:
package de.jade.kursarbeit;

import java.awt.EventQueue;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JCheckBox;

public class JFrame extends javax.swing.JFrame {

    private JPanel contentPane;
    private JTextField OwnPositionLatD;
    private JTextField POILatD;
    private JTextField OwnPositionLongD;
    private JTextField POILongD;
    private JTextField STimeIncident;
    private JTextField STime;

    private JTextPane txtPaneSAR;

    private String[] VesselsString = { "Number of Vessels involved", "1", "2", "3", "4", "5", "more than 5" };

    private String[] SO = { "Search Object", "Person in water", "4-Person liferaft", "6-Person liferaft",
            "15-Person liferaft", "25-Person liferaft", "Boat < 5m", "Boat 7m", "Boat 12m", "Boat 24m" };

    private String[] WindSpeed = { "Wind speed", "0-15kn", "15-25kn", "Wind > 25kn" };
    private String[] Visi = { "Visibility", "3nm", "5nm", "10nm", "15nm", "20nm" };
    private String[] Lat = { "N", "S" };
    private String[] Long = { "E", "W" };
    private String[] CurrentString = { "Current speed", "0-1kn", "1-2kn" };
    private String[] WindDirection = { "Wind Direction", "N", "NE", "E", "SE", "S", "SW", "W", "NW" };
    private String[] CurrentDirection = { "Current Direction", "N", "NE", "E", "SE", "S", "SW", "W", "NW" };

    private JTextField OwnPositionLatM;
    private JTextField POILatM;
    private JTextField OwnPositionLongM;
    private JTextField POILongM;
    int TimeInci, TimeNow;
    double LatDPOI, LatMPOI, LatPOI, LongDPOI, LongMPOI, LongPOI, LatDOwn, LatMOwn, LatOwn, LongDOwn, LongMOwn, LongOwn,
            LatMin, LongMin, PLatMin, PLongMin, PLatOwn, PLongOwn, a, b, l, Mittelbreite, d, a_quad, b_quad, TimeDif,
            LatDatum, LongDatum;
    String PLat;

    public JFrame() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 630, 477);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblOwnPosition = new JLabel("Own Position");
        lblOwnPosition.setBounds(30, 31, 102, 30);
        contentPane.add(lblOwnPosition);

        OwnPositionLatD = new JTextField();
        OwnPositionLatD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
                if (LatDOwn > 90) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");
                }
            }
        });
        OwnPositionLatD.setBounds(156, 35, 37, 22);
        contentPane.add(OwnPositionLatD);
        OwnPositionLatD.setColumns(10);

        OwnPositionLatM = new JTextField();
        OwnPositionLatM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
                if (LatMOwn > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatM.setText("");

                }
            }
        });

        OwnPositionLatM.setColumns(10);
        OwnPositionLatM.setBounds(235, 35, 37, 22);
        contentPane.add(OwnPositionLatM);

        JComboBox N_S = new JComboBox(Lat);
        N_S.setBounds(314, 35, 44, 22);
        contentPane.add(N_S);

        OwnPositionLongD = new JTextField();
        OwnPositionLongD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
                if (LongDOwn > 180) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        OwnPositionLongD.setBounds(384, 35, 37, 22);
        contentPane.add(OwnPositionLongD);
        OwnPositionLongD.setColumns(10);

        OwnPositionLongM = new JTextField();
        OwnPositionLongM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
                if (LongMOwn > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        OwnPositionLongM.setColumns(10);
        OwnPositionLongM.setBounds(467, 35, 37, 22);
        contentPane.add(OwnPositionLongM);

        JComboBox E_W = new JComboBox(Long);
        E_W.setBounds(547, 35, 44, 22);
        contentPane.add(E_W);

        JLabel lblPositionOfIncident = new JLabel("Position of Incident");
        lblPositionOfIncident.setBounds(30, 77, 135, 16);
        contentPane.add(lblPositionOfIncident);

        POILatD = new JTextField();
        POILatD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDPOI = Integer.parseInt(POILatD.getText());
                if (LatDPOI > 90) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");
                }
            }
        });
        POILatD.setBounds(156, 74, 37, 22);
        contentPane.add(POILatD);
        POILatD.setColumns(10);

        POILatM = new JTextField();
        POILatM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatMPOI = Integer.parseInt(POILatM.getText());
                if (LatMPOI > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILatM.setColumns(10);
        POILatM.setBounds(235, 74, 37, 22);
        contentPane.add(POILatM);

        JComboBox N_SPOI = new JComboBox(Lat);
        N_SPOI.setBounds(314, 74, 44, 22);
        contentPane.add(N_SPOI);

        POILongD = new JTextField();
        POILongD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongDPOI = Integer.parseInt(POILongD.getText());
                if (LongDPOI > 180) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILongD.setBounds(384, 74, 37, 22);
        contentPane.add(POILongD);
        POILongD.setColumns(10);

        POILongM = new JTextField();
        POILongM.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LongMPOI = Integer.parseInt(POILongM.getText());
                if (LongMPOI > 60) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");

                }
            }
        });
        POILongM.setColumns(10);
        POILongM.setBounds(467, 74, 37, 22);
        contentPane.add(POILongM);

        JComboBox E_WPOI = new JComboBox(Long);
        E_WPOI.setBounds(547, 74, 44, 22);
        contentPane.add(E_WPOI);

        JLabel lblShipTimeIncident = new JLabel("Time of Incident UTC");
        lblShipTimeIncident.setBounds(30, 164, 135, 16);
        contentPane.add(lblShipTimeIncident);

        STimeIncident = new JTextField();
        STimeIncident.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TimeInci = Integer.parseInt(STimeIncident.getText());

            }
        });
        STimeIncident.setBounds(156, 161, 116, 22);
        contentPane.add(STimeIncident);
        STimeIncident.setColumns(10);

        JLabel lblShipTime = new JLabel("Time now UTC");
        lblShipTime.setBounds(314, 164, 85, 16);
        contentPane.add(lblShipTime);

        STime = new JTextField();
        STime.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                TimeNow = Integer.parseInt(STime.getText());
            }
        });
        STime.setBounds(419, 161, 116, 22);
        contentPane.add(STime);
        STime.setColumns(10);

        JComboBox CurrentS = new JComboBox(CurrentString);
        CurrentS.setBounds(347, 202, 110, 22);
        contentPane.add(CurrentS);

        JComboBox WindS = new JComboBox(WindSpeed);
        WindS.setBounds(185, 202, 102, 22);
        contentPane.add(WindS);

        JComboBox Vessels = new JComboBox(VesselsString);
        Vessels.setBounds(30, 254, 184, 22);
        contentPane.add(Vessels);

        JComboBox Visibility = new JComboBox(Visi);
        Visibility.setBounds(444, 254, 135, 22);
        contentPane.add(Visibility);

        JComboBox SearchObject = new JComboBox(SO);
        SearchObject.setBounds(260, 254, 135, 22);
        contentPane.add(SearchObject);

        txtPaneSAR = new JTextPane();
        txtPaneSAR.setBounds(271, 343, 223, 22);
        contentPane.add(txtPaneSAR);

        JLabel lblDegree1 = new JLabel("°");
        lblDegree1.setBounds(203, 38, 23, 16);
        contentPane.add(lblDegree1);

        JLabel lblDegree3 = new JLabel("°");
        lblDegree3.setBounds(205, 77, 23, 16);
        contentPane.add(lblDegree3);

        JLabel lblDegree2 = new JLabel("°");
        lblDegree2.setBounds(432, 38, 23, 16);
        contentPane.add(lblDegree2);

        JLabel lblDegree4 = new JLabel("°");
        lblDegree4.setBounds(432, 77, 23, 16);
        contentPane.add(lblDegree4);

        JLabel lblMinute2 = new JLabel("´");
        lblMinute2.setBounds(512, 38, 23, 16);
        contentPane.add(lblMinute2);

        JLabel lblMinute4 = new JLabel("´");
        lblMinute4.setBounds(512, 77, 23, 16);
        contentPane.add(lblMinute4);

        JLabel lblMinute1 = new JLabel("´");
        lblMinute1.setBounds(279, 38, 23, 16);
        contentPane.add(lblMinute1);

        JLabel lblMinute3 = new JLabel("´");
        lblMinute3.setBounds(279, 77, 23, 16);
        contentPane.add(lblMinute3);

        JCheckBox chckbxPUnknown = new JCheckBox("Position of Incident unkown");
        chckbxPUnknown.setBounds(156, 111, 184, 25);
        contentPane.add(chckbxPUnknown);

        JCheckBox chckbxTUnknown = new JCheckBox("Time of Incident unknown");
        chckbxTUnknown.setBounds(384, 111, 184, 25);
        contentPane.add(chckbxTUnknown);

        JCheckBox chckbxMOB = new JCheckBox("MOB");
        chckbxMOB.setBounds(30, 111, 113, 25);
        contentPane.add(chckbxMOB);

        JButton btnRecommendation = new JButton("Recommended Search Pattern");
        btnRecommendation.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
                LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
                LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
                LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
                LatMin = LatMOwn / 60;
                LongMin = LongMOwn / 60;

                LatOwn = LatDOwn + LatMin;
                LongOwn = LongDOwn + LongMin;

                LatDPOI = Integer.parseInt(POILatD.getText());
                LatMPOI = Integer.parseInt(POILatM.getText());
                LongDPOI = Integer.parseInt(POILongD.getText());
                LongMPOI = Integer.parseInt(POILongM.getText());
                PLatMin = LatMPOI / 60;
                PLongMin = LongMPOI / 60;

                PLatOwn = LatDPOI + PLatMin;
                PLongOwn = LongDPOI + PLongMin;

                b = (LatOwn - PLatOwn) * 60;
                l = (LongOwn - PLongOwn) * 60;

                Mittelbreite = 1 / 2 * (LatOwn + PLatOwn);
                a = l * Math.cos(Mittelbreite);

                a_quad = Math.pow(a, 2);
                b_quad = Math.pow(b, 2);

                d = Math.sqrt(a_quad + b_quad);

                TimeNow = Integer.parseInt(STime.getText());
                TimeInci = Integer.parseInt(STimeIncident.getText());
                TimeDif = TimeNow - TimeInci;

                String selectedItem = (String) Vessels.getSelectedItem();

                if (selectedItem.equals("2")) {
                    txtPaneSAR.setText("Parallel Track Pattern 2");
                } else if (selectedItem.equals("3")) {
                    txtPaneSAR.setText("Parallel Track Pattern 3");
                } else if (selectedItem.equals("4")) {
                    txtPaneSAR.setText("Parallel Track Pattern 4");
                } else if (selectedItem.equals("5")) {
                    txtPaneSAR.setText("Parallel Track Pattern 5");
                } else if (selectedItem.equals("more than 5")) {
                    txtPaneSAR.setText("Parallel Track Pattern 5");
                }

            }

        });
        btnRecommendation.setBounds(24, 343, 229, 25);
        contentPane.add(btnRecommendation);

    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    JFrame frame = new JFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
 
es wäre einfacher dir zu helfen, wenn du nicht immer deinen kompletten Code posten würdest, sondern nur die Bereiche, die du geändert hast oder die wichtig sind. Dann ist es schön wenn du sagst, du kriegst eine Fehlermeldung, aber ohne die genaue Fehlermeldung kann ich dir leider gar nicht weiterhelfen 🙁. Also wäre gut, wenn du die genaue Fehlermeldung und den dazugehörigen Code (bzw. die Bereiche, die du geändert hast, also den die ActionPerformed vom Button und die Combobox) posten könntest, sodass ich nicht deinen kompletten Code lesen muss😉
 
Ok sorry verständlich....
Habe aber auch gerade festgestellt das der Teil mit dem if-statement funktioniert nur der andere Teil unter dem JButton zur Berechnung von Distanz und Zeitdifferenz nicht 🙁
Vielleicht könntest du mir sagen wo da der Fehler liegt??? Hier der Codeteil der Probleme macht.
Der obere Teil is falls nicht bekannt eine Distanzberechnung nach Mittelbreite für die Navigation auf Schiffen...

Code:
JButton btnRecommendation = new JButton("Recommended Search Pattern");
        btnRecommendation.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDOwn = Integer.parseInt(OwnPositionLatD.getText());
                LatMOwn = Integer.parseInt(OwnPositionLatM.getText());
                LongDOwn = Integer.parseInt(OwnPositionLongD.getText());
                LongMOwn = Integer.parseInt(OwnPositionLongM.getText());
                LatMin = LatMOwn / 60;
                LongMin = LongMOwn / 60;

                LatOwn = LatDOwn + LatMin;
                LongOwn = LongDOwn + LongMin;

                LatDPOI = Integer.parseInt(POILatD.getText());
                LatMPOI = Integer.parseInt(POILatM.getText());
                LongDPOI = Integer.parseInt(POILongD.getText());
                LongMPOI = Integer.parseInt(POILongM.getText());
                PLatMin = LatMPOI / 60;
                PLongMin = LongMPOI / 60;

                PLatOwn = LatDPOI + PLatMin;
                PLongOwn = LongDPOI + PLongMin;

                b = (LatOwn - PLatOwn) * 60;
                l = (LongOwn - PLongOwn) * 60;

                Mittelbreite = 1 / 2 * (LatOwn + PLatOwn);
                a = l * Math.cos(Mittelbreite);

                a_quad = Math.pow(a, 2);
                b_quad = Math.pow(b, 2);

                d = Math.sqrt(a_quad + b_quad);

                TimeNow = Integer.parseInt(STime.getText());
                TimeInci = Integer.parseInt(STimeIncident.getText());
                TimeDif = TimeNow - TimeInci;
                
                if (d<5 && TimeDif < 0.5 ) {
                    txtPaneSAR.setText("Expanding Search Square");
                }

Wenn ich den Teil "ausklammer" funktioniert es, nur mit halt nicht.

Der Fehler der mir ausgespuckt wird ist folgender:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.parseInt(Integer.java:615)
    at de.jade.kursarbeit.JFrame$11.actionPerformed(JFrame.java:319)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 
also eine NumberFormatException ist, wenn in dem String, den du zu einer Zahl castest, keine Zahl drin ist. Hier bei deiner Exception ist einer der Strings leer, d.h. in dem TextField wurde nichts eingegeben. Ihr würde auch anstatt der Integer.parseInt die Integer.valueof verwenden, weil aus meiner Erfahrung weiß ich, dass die parseInt nicht so sauber funktioniert. Allgemein verwendet die valueof intern die parseInt. Also check mal, ob die Strings, die du parsen willst auch wirklich Zahlen enthalten und überprüfe vorher, ob eine Eingabe in dem TextField erfolgt ist (mit getText().isEmpty())😉
 
So das klappt vielen vielen Dank, du bist echt eine große Hilfe.
Eine Frage (erstmal 😅) habe ich nicht.... gibt es eventuell etwas wie ich in der if Abfrage ein equals this or that machen kann??
Also als Beispiel:
Ich habe die
JComboBox SearchObject = new JComboBox(SO);
mit dem String
private String[] SO = { "Search Object", "Person in water", "4-Person liferaft", "6-Person liferaft",
"15-Person liferaft", "25-Person liferaft", "Boat < 5m", "Boat 7m", "Boat 12m", "Boat 24m" };

und möchte if if-statement sagen das mein selectedItem.equals ("Person in water" or "4-Person liferaft")

ist das irgendwie möglich eventuell? Weil wenn ich && eingebe müsste ja beides ausgewählt werden, was bei der selben JComboBox nicht funktioniert
 
So meine hoffentlich letzte Frage..... 😅
Im JTextField möchte ich eine Zahl mit Komma eingeben, dabei wird mir aber ein Fehler ausgegeben. Habe es auch schon mit Punkt statt Komma versucht aber das geht auch nicht. Zufällig ne Idee wie man das lösen kann? Sonst erstelle ich einfach ein neues JTextField für die Zahl hinterm Komma....
hier der Code:
Java:
POILatD = new JTextField();
        POILatD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                LatDPOI = Integer.valueOf(POILatD.getText());
                if (LatDPOI > 90) {
                    JOptionPane.showMessageDialog(null, "Please enter valid minutes", "Error ",
                            JOptionPane.INFORMATION_MESSAGE);

                    OwnPositionLatD.setText("");
                }
            }
        });
        POILatD.setBounds(156, 74, 37, 22);
        contentPane.add(POILatD);
        POILatD.setColumns(10);

und das nutzte ich hier nochmal für meiner Berechnung:
Java:
JButton btnRecommendation = new JButton("Recommended Search Pattern");
        btnRecommendation.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            
                String selectedLatOwn = (String) N_S.getSelectedItem();
                if (selectedLatOwn.equals("S")) {
                    LatOwn = LatOwn *-1;
                }
                String selectedLongOwn = (String) E_W.getSelectedItem();
                if (selectedLongOwn.equals("W")) {
                    LongOwn = LongOwn *-1;
                }
                
                String selectedLatPOI = (String) N_SPOI.getSelectedItem();
                if (selectedLatPOI.equals("S")) {
                    PLatOwn = PLatOwn *-1;
                }
                String selectedLongPOI = (String) E_WPOI.getSelectedItem();
                if (selectedLongPOI.equals("W")) {
                    PLongOwn = PLongOwn *-1;
                }        
                
                LatDOwn = Integer.valueOf(OwnPositionLatD.getText());
                LatMOwn = Integer.valueOf(OwnPositionLatM.getText());
                LongDOwn = Integer.valueOf(OwnPositionLongD.getText());
                LongMOwn = Integer.valueOf(OwnPositionLongM.getText());
                LatMin = LatMOwn / 60;
                LongMin = LongMOwn / 60;

                LatOwn = LatDOwn + LatMin;
                LongOwn = LongDOwn + LongMin;

                LatDPOI = Integer.valueOf(POILatD.getText());
                LatMPOI = Integer.valueOf(POILatM.getText());
                LongDPOI = Integer.valueOf(POILongD.getText());
                LongMPOI = Integer.valueOf(POILongM.getText());
                PLatMin = LatMPOI / 60;
                PLongMin = LongMPOI / 60;

                PLatOwn = LatDPOI + PLatMin;
                PLongOwn = LongDPOI + PLongMin;

                b = (LatOwn - PLatOwn) * 60;
                l = (LongOwn - PLongOwn) * 60;

                Mittelbreite = 1 / 2 * (LatOwn + PLatOwn);
                a = l * Math.cos(Mittelbreite);

                a_quad = Math.pow(a, 2);
                b_quad = Math.pow(b, 2);

                d = Math.sqrt(a_quad + b_quad);

Der Fehler sieht wie folgt aus:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "24,2"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.valueOf(Integer.java:766)
    at de.jade.kursarbeit.JFrame$11.actionPerformed(JFrame.java:325)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6539)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6304)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 
ja das Problem ist, dass in Java Zahlen immer mit Punkt abgespeichert werden, sprich Komma kennt er nicht, probier mal LatDPOI = Integer.valueOf(POILatD.getText().replace(',', '.'))
 
m JTextField möchte ich eine Zahl mit Komma eingeben, dabei wird mir aber ein Fehler ausgegeben.
Dein Ansatz ist meines Erachtens nicht wirklich gut. Das JTextField sollte sicherstellen, dass die Eingabe bereits formatiert erfolgt.
--> Beim Umwandeln von String in Zahlen kommt es zu keinem Fehler und der Benutzer ist gezwungen die erwartete Eingabe korrekt zu machen.
Hier ein Beispiel für eine formatierte Eingabe mit JTextField.
1609683695765.png
[CODE lang="java" title="formatierte Usereingabe"]import javax.swing.JFrame;

public class TestFormatedInput {
public static void main(String[] args) {
JFrame frame = new JFrame("Test Input");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new FormatedInputPanel(900, 80));
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
}
}[/CODE]
[CODE lang="java" title="FormatedInputPanel" highlight="14-16"]import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import textfieldinput.TypeDocument.TYPE;

@SuppressWarnings("serial")
public class FormatedInputPanel extends JPanel {
private static final int FONTHEIGHT = 20;
private JTextField[] input = { new JTextField(new TypeDocument(TYPE.FLOAT), "4.4", 10),
new JTextField(new TypeDocument(TYPE.TEXT), "Hallo", 10),
new JTextField(new TypeDocument(TYPE.INT), "10", 10) };
private JLabel output = new JLabel();
private JButton ok = new JButton("ok");

public FormatedInputPanel(int width, int height) {
setPreferredSize(new Dimension(width, height));
setFont(new Font("Courier", Font.BOLD, FONTHEIGHT));
for (int i = 0; i < input.length; i++) {
add(input);
input.setHorizontalAlignment(JTextField.CENTER);
input.setFont(getFont());
((TypeDocument) input.getDocument()).setMaxSize(10);
}
output.setPreferredSize(new Dimension(width / 3, 2 * FONTHEIGHT));
output.setBorder(BorderFactory.createLineBorder(Color.BLUE));
output.setFont(getFont());
output.setHorizontalAlignment(JLabel.CENTER);
output.setOpaque(true);
output.setBackground(Color.WHITE);
add(output);
add(ok);
ok.setFont(getFont());
ok.addActionListener(e -> {
String str = " ";
for (JTextField txt : input)
str += txt.getText() + " ";
output.setText(str);
});
}
}[/CODE]
[CODE lang="java" title="TypeDocument" highlight="29-41"]import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

@SuppressWarnings("serial")
public class TypeDocument extends PlainDocument {
public static enum TYPE {
TEXT, INT, FLOAT
}

public static final int NO_LIMIT = -1;
private int maxSize = NO_LIMIT;
private TYPE type = TYPE.TEXT;

/**
* Offers user's formated input of integer floating point or text.
*
* @param type
* {TEXT, INT , FLOAT}
* @see #setMaxSize(int)
*/
public TypeDocument(TYPE type) {
this.type = type;
}

@Override
public void insertString(final int offset, String text, final AttributeSet attributeSet)
throws BadLocationException {
if (type == TYPE.INT || type == TYPE.FLOAT) {
String format = ".*[^0-9";
String point = "";
if (type == TYPE.FLOAT) {
Content content = getContent();
String txt = content.getString(0, content.length());
point = txt.contains(".") ? "" : ".";
}
format += point + "]";
text = text.replaceAll(format, ""); // remove all non digits
}
if (isNewLengthOk(text))
super.insertString(offset, text, attributeSet);
}

protected boolean isNewLengthOk(final String text) {
if (maxSize == NO_LIMIT || getLength() + text.length() <= maxSize)
return true;
return false;
}

/**
* Limits input to given length.
*
* @param maxSize
*/
public void setMaxSize(int maxSize) {
if (maxSize < 1)
return;
this.maxSize = maxSize;
}
}[/CODE]
 
Dein Ansatz ist meines Erachtens nicht wirklich gut. Das JTextField sollte sicherstellen, dass die Eingabe bereits formatiert erfolgt.
--> Beim Umwandeln von String in Zahlen kommt es zu keinem Fehler und der Benutzer ist gezwungen die erwartete Eingabe korrekt zu machen.
Hier ein Beispiel für eine formatierte Eingabe mit JTextField.
Also vielen Dank für den Beitrag, leider verstehe ich nicht so ganz was da passiert und wie ich das bei mir einfügen kann. (Bin wirklich ziemlicher Anfänger wie man an meinen Fragen wohl erkennen kann 😅 )
Durch den Tipp von thecain habe ich es jetzt so hinbekommen das es auf jeden Fall für meine Zwecke funktioniert.....
 

Zurück
Oben