Guten Abend,
ich bin noch Anfänger und bin grad dabei mich etwas in die Materie einzuarbeiten, deswegen hoffe ich, Ihr könnt mir ein paar "leichte" Fehler verzeihen
.
Folgender Sachverhalt:
Ich habe ein JSplitPane. Auf seiner linken Seite ist ein JTree. Auf der Rechten das CardLayout.
Nun soll sich der rechte Bereich bei bestimmten Klick des Jtrees ändern. Also eine Card angezeigt werden.
Allerding lässt sich das Programm nicht starten. Folgende Fehlermeldung wird in der Konsole angezeigt:
"Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string"
Hier der Code:
Des Weiteren ist das Layout der externen Klasse (z.B. PassengerManage) das GridBagLayout.
Könnte es das auch Probleme geben?
Vielen Dank für Eure Hilfe!
ich bin noch Anfänger und bin grad dabei mich etwas in die Materie einzuarbeiten, deswegen hoffe ich, Ihr könnt mir ein paar "leichte" Fehler verzeihen
Folgender Sachverhalt:
Ich habe ein JSplitPane. Auf seiner linken Seite ist ein JTree. Auf der Rechten das CardLayout.
Nun soll sich der rechte Bereich bei bestimmten Klick des Jtrees ändern. Also eine Card angezeigt werden.
Allerding lässt sich das Programm nicht starten. Folgende Fehlermeldung wird in der Konsole angezeigt:
"Exception in thread "main" java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string"
Hier der Code:
Java:
package InterfaceTest_Neu;
/**
*
* @author abc
*/
import javax.swing.*;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import java.awt.*;
import java.awt.CardLayout;
public class TreeDemo extends JFrame {
public TreeDemo() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardLayout c1 = new CardLayout();
JPanel leftp = new JPanel(c1);
// Erstellung des trees
DefaultMutableTreeNode root = new DefaultMutableTreeNode( "Editor > Verwaltung" );
DefaultMutableTreeNode passengerT = new DefaultMutableTreeNode( "Passagier" );
DefaultMutableTreeNode airportT = new DefaultMutableTreeNode( "Flughafen" );
DefaultMutableTreeNode seatStructureT = new DefaultMutableTreeNode( "Sitzstruktur" );
DefaultMutableTreeNode aircraftTypT = new DefaultMutableTreeNode( "Flugzeugtyp" );
DefaultMutableTreeNode airlineT = new DefaultMutableTreeNode( "Fluglinie" );
DefaultMutableTreeNode aircraftT = new DefaultMutableTreeNode( "Flugzeug" );
DefaultMutableTreeNode flightT = new DefaultMutableTreeNode( "Flug" );
DefaultMutableTreeNode flightRealizationT = new DefaultMutableTreeNode( "Flugdurchführung" );
DefaultMutableTreeNode bookingT = new DefaultMutableTreeNode( "Buchung" );
final DefaultMutableTreeNode passengerOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode airportOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode seatStructureOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode aircraftTypOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode airlineOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode aircraftOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode flightOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode flightRealizationOverview = new DefaultMutableTreeNode( "Übersicht" );
DefaultMutableTreeNode bookingOverview = new DefaultMutableTreeNode( "Übersicht" );
// ... dann werden sie verknüpft
passengerT.add( passengerOverview );
airportT.add( airportOverview );
seatStructureT.add( seatStructureOverview );
aircraftTypT.add( aircraftTypOverview );
airlineT.add( airlineOverview );
aircraftT.add( aircraftOverview );
flightT.add( flightOverview );
flightRealizationT.add( flightRealizationOverview );
bookingT.add( bookingOverview );
root.add( passengerT );
root.add( airportT );
root.add( seatStructureT );
root.add( aircraftTypT );
root.add( airlineT );
root.add( aircraftT );
root.add( flightT );
root.add( flightRealizationT );
root.add( bookingT );
final JTree tree = new JTree( root );
final JScrollPane scrollTree = new JScrollPane( tree );
tree.setPreferredSize(new Dimension(250,600));
this.add(scrollTree);
leftp.add(tree);
JPanel mainPage = new JPanel();
// Erstellung des Cards für den rechten Bereich (werden aus externen Klassen geholt)
// Passenger
final JPanel passengerManage = new JPanel();
JPanel passengerCreate = new JPanel();
JPanel passengerEdit = new JPanel();
// Airport
JPanel airportManage = new JPanel();
JPanel airportCreate = new JPanel();
JPanel airportEdit = new JPanel();
// Habe hier überall Strings hinzugefügt, da ich gelesen habe, dass das oft der Grund für die Fehlermeldung sein kann. In diesem Fall hat das jedoch nichts gebracht
mainPage.add(new MainPage(), "Hier");
passengerManage.add(new PassengerManage(), "das");
passengerCreate.add(new PassengerCreate(), "das");
passengerEdit.add(new PassengerEdit(), "das");
airportManage.add(new AirportManage(), "das");
airportCreate.add(new AirportCreate(), "das");
airportEdit.add(new AirportEdit2(), "das");
final JPanel rightp = new JPanel(new CardLayout());
rightp.add(mainPage, "One");
rightp.add(passengerManage, "Passagier verwalten");
rightp.add(passengerCreate, "Three");
rightp.add(passengerEdit, "Four");
rightp.add(airportManage, "Two");
rightp.add(airportCreate, "Three");
rightp.add(airportEdit, "Four");
//Add the scroll panes to a split pane.
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(tree);
splitPane.setRightComponent(rightp);
splitPane.setContinuousLayout(false);
splitPane.setDividerLocation(200);
splitPane.setEnabled(false);
//Add the split pane to this panel.
getContentPane().add(splitPane);
tree.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener()
{
@Override public void valueChanged( TreeSelectionEvent e )
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (node == null)
return;
else if (node.getParent().toString().equals( "Passagier")) {
((CardLayout)passengerManage.getLayout()).show(passengerManage, "Passagier verwalten");
}
}
});
}
public static void main(String[] args) {
TreeDemo td = new TreeDemo();
td.setSize(800,600);
td.show();
}
}
Des Weiteren ist das Layout der externen Klasse (z.B. PassengerManage) das GridBagLayout.
Könnte es das auch Probleme geben?
Vielen Dank für Eure Hilfe!