我想将一个框架JFrame
(WagenGUI)与另一个框架JFrame
(ausgewaehlterWagen)连接,并将String array
从WagenGUI移交给ausgewaehlerWagen,其中包含在JComboBox
中选择的车辆。
我以为我可以将String array
交给ausgewaehlterWagen(Wagen =车辆),它可以工作。不幸的是,我遇到了例外。我希望你能帮助我
我想与class wagenGui
连接的ausgewaehlterWagen
的代码:
package Design;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
public class wagenGUI extends JFrame {
public static String[] GetStringArray(ArrayList<String> arr)
{
// declaration and initialise String Array
String str[] = new String[arr.size()];
// ArrayList to Array Conversion
for (int j = 0; j < arr.size(); j++) {
// Assign each value to String array
str[j] = arr.get(j);
}
return str;
}
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
wagenGUI frame = new wagenGUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public wagenGUI() {
setVisible(true);
setTitle("Wagen");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblAlleWagen = new JLabel("Alle Wagen");
lblAlleWagen.setFont(new Font("Tahoma", Font.BOLD, 40));
lblAlleWagen.setBackground(Color.WHITE);
lblAlleWagen.setBounds(283, 23, 239, 67);
contentPane.add(lblAlleWagen);
DBConnect connect = new DBConnect();
Wagen ListeWagen;
for (int i=1; i<11;i++) { //erzeugt 10 Wagen
ListeWagen = new Wagen(i,50.0, true, 0);
}
ArrayList <String> AlleWagen = new ArrayList <String>();
for (int i=1; i<11;i++) {
int kennzeichen = i;
int ebennummer = connect.getWagenEbenenummer(i);
boolean verfuegbar = connect.getWagenVerfuegbar(i);
double veLimit = connect.getWagenVeLimit(i);
String verfuegbard="";
if (verfuegbar == true) {
verfuegbard = "Verfuegbar";
AlleWagen.add("Kennzeichen: "+String.valueOf(kennzeichen)+", Ve Limit: "+String.valueOf(veLimit)+", Ebenenummer "+(String.valueOf(ebennummer))+", Status:"+(verfuegbard));
//System.out.println(AlleWagen); test
}
else {verfuegbard = "nicht Verfuebar";
AlleWagen.add("Kennzeichen: "+String.valueOf(kennzeichen)+", Ve Limit: "+String.valueOf(veLimit)+", Ebenenummer "+(String.valueOf(ebennummer))+", Status:"+(verfuegbard));
//System.out.println(AlleWagen); test
}
}
//System.out.println(AlleWagen); test
String[] AlleWagenString = GetStringArray(AlleWagen);
JComboBox comboBoxWagenAuswaehlen = new JComboBox(AlleWagenString);
comboBoxWagenAuswaehlen.setFont(new Font("Tahoma", Font.BOLD, 17));
comboBoxWagenAuswaehlen.setBounds(92, 102, 611, 294);
contentPane.add(comboBoxWagenAuswaehlen);
JButton btnNewButton = new JButton("Wagen ausw\u00E4hlen");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String [] s = ((String[]) comboBoxWagenAuswaehlen.getSelectedItem());
//augewählter Wagen parameter übergeben.
new ausgewaehlterWagen(s);
dispose();
}
});
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 30));
btnNewButton.setBounds(181, 426, 406, 34);
contentPane.add(btnNewButton);
JButton btnBack = new JButton("zur\u00FCck zum Hauptmen\u00FC");
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Hauptmenue();
dispose();
}
});
btnBack.setFont(new Font("Tahoma", Font.BOLD, 30));
btnBack.setBounds(181, 486, 406, 34);
contentPane.add(btnBack);
JButton button = new JButton("Ausloggen");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
new Login();
dispose();
}
});
button.setFont(new Font("Tahoma", Font.BOLD, 12));
button.setBounds(645, 23, 139, 29);
contentPane.add(button);
JLabel label = new JLabel("Benutzer:");
label.setFont(new Font("Tahoma", Font.BOLD, 12));
label.setBounds(645, 0, 139, 23);
contentPane.add(label);
}
}
我需要在其中插入String[]
的AusgewaehlterWagen类的代码以完成此命令:
String [] ss = {"",""};
ausgewaehlterWagen frame = new ausgewaehlterWagen(ss);
也许这是错误的?但是我真的不知道如何更改它,因此不需要在此处插入String array
。
我也想将String array
移交给ausgewählterWagen
,其中包含所选择的车辆。
public ausgewaehlterWagen(String [] ausgewählterWagen) {
package Design;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.text.Document;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ausgewaehlterWagen extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
String [] ss = {"",""};
ausgewaehlterWagen frame = new ausgewaehlterWagen(ss) ;
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ausgewaehlterWagen(String [] ausgewählterWagen) {
setVisible(true);
setTitle("ausgew\u00E4hlter Wagen");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBackground(Color.LIGHT_GRAY);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblAusgewhlterWagen = new JLabel("ausgew\u00E4hlter Wagen");
lblAusgewhlterWagen.setFont(new Font("Tahoma", Font.BOLD, 35));
lblAusgewhlterWagen.setBackground(Color.WHITE);
lblAusgewhlterWagen.setBounds(191, 18, 428, 49);
contentPane.add(lblAusgewhlterWagen);
JLabel lblPackliste = new JLabel("Packliste");
lblPackliste.setFont(new Font("Tahoma", Font.BOLD, 35));
lblPackliste.setBackground(Color.WHITE);
lblPackliste.setBounds(281, 258, 175, 42);
contentPane.add(lblPackliste);
String [] ausgewählterWagen1 = (ausgewählterWagen);
JComboBox comboBoxAusgewaehlterWagen = new JComboBox(ausgewählterWagen1);
comboBoxAusgewaehlterWagen.setBounds(116, 78, 503, 82);
contentPane.add(comboBoxAusgewaehlterWagen);
JComboBox comboBoxPackliste = new JComboBox();
comboBoxPackliste.setFont(new Font("Tahoma", Font.BOLD, 30));
comboBoxPackliste.setBounds(116, 319, 503, 82);
contentPane.add(comboBoxPackliste);
JButton btnPacklisteDrucken = new JButton("Packliste drucken");
btnPacklisteDrucken.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnPacklisteDrucken.setFont(new Font("Tahoma", Font.BOLD, 30));
btnPacklisteDrucken.setBounds(181, 435, 416, 42);
contentPane.add(btnPacklisteDrucken);
JButton btnBackWagen = new JButton("zur\u00FCck zu den Wagen");
btnBackWagen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new wagenGUI();
dispose();
}
});
btnBackWagen.setFont(new Font("Tahoma", Font.BOLD, 25));
btnBackWagen.setBounds(54, 504, 306, 42);
contentPane.add(btnBackWagen);
JButton btnBack = new JButton("zur\u00FCck zum Hauptmen\u00FC");
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Hauptmenue();
dispose();
}
});
btnBack.setFont(new Font("Tahoma", Font.BOLD, 25));
btnBack.setBounds(408, 504, 331, 42);
contentPane.add(btnBack);
JLabel lblVerschiebenNach = new JLabel("Verschieben nach:");
lblVerschiebenNach.setFont(new Font("Tahoma", Font.BOLD, 25));
lblVerschiebenNach.setBounds(116, 174, 247, 32);
contentPane.add(lblVerschiebenNach);
JButton btnVerschieben = new JButton("Verschieben");
btnVerschieben.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnVerschieben.setBounds(444, 221, 175, 23);
contentPane.add(btnVerschieben);
JComboBox comboBoxVerschieben = new JComboBox();
comboBoxVerschieben.setBounds(444, 171, 175, 51);
contentPane.add(comboBoxVerschieben);
JButton button = new JButton("Ausloggen");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Login();
dispose();
}
});
button.setFont(new Font("Tahoma", Font.BOLD, 12));
button.setBounds(645, 25, 139, 29);
contentPane.add(button);
JLabel label = new JLabel("Benutzer:");
label.setFont(new Font("Tahoma", Font.BOLD, 12));
label.setBounds(645, 0, 139, 23);
contentPane.add(label);
}
}
单击button
“ Wagenauswaehlen”后的输出:
"Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;
at Design.wagenGUI$2.actionPerformed(wagenGUI.java:107)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
ClassCastException
,它告诉您在哪里。在针对wagenGui
的操作的btnNewButton
类中,尝试执行String [] s=((String[])comboBoxWagenAuswaehlen.getSelectedItem());
。但是getSelectedItem()
返回一个String
,不能转换为String[]
。