JList will nicht ins JPanel :(

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JList will nicht ins JPanel :(

    Abend zusammen,

    ich versuche mich gerade ein wenig an Java und muss sagen, dass ich die "Logik", die hinter dem Aufbau der ganzen Funktionen stecken muss, noch nicht so ganz verstanden habe.

    Was wohl nicht zuletzt datan liegen kann, dass ich keine wirklich sinnvolle Webseite oder ein gutes Forum, wo man ein bischen stöbern könnte, finde.
    Also falls jemand ein paar gute Seiten kennt, immer her damit.

    Nun aber zu meinem Problem:

    Ich habe ein einfaches JPanel und möchte darin Informationen zu 5 verschiedenen "Produkten" anzeigen.
    Diese werden wiederrum in der JList aufgelistet und je nach dem, welches man anklickt, werden dann die entsprechenden Info's in 2 weiteren JLabel's angezeigt.

    Soweit die Theorie, in der Praxis stellt er mir zwar die 2 JLabel's dar, die JList fehlt aber komplett, eine Fehlermeldung kommt auch nich.
    Kann mir jemand einen Tipp geben, was wo falsch sein könnte?

    Code:
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    class windowTab extends JPanel {
    	public windowTab () {
    		setPreferredSize(new Dimension(400,200));
    	        JTabbedPane pane=new JTabbedPane();
            	pane.add("Rot",new systemsOverview( ) );
    		setLayout(new BorderLayout());
    		add("Center",pane);
    	}
    }
    
    public class window extends JFrame {
    	public window () {
    		super("window");
            	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            	getContentPane().add("Center",new windowTab() );
            	pack();
    	}
        
    	public static void main (String args[]) {
    		JFrame F=new window();
    		F.setVisible(true);
    	}
    }
    
    final class systemsOverview extends JLabel {
    	JLabel label;
    	JList list;
        
    	public static String[] names = {
        		"System 1",
        		"System 2",
        		"System 3",
        		"System 4",
        		"System 5"
    	};
        
    	public static String[] descs = {
        		"Beschreibung 1",
        		"Beschreibung 2",
        		"Beschreibung 3",
        		"Beschreibung 4",
        		"Beschreibung 5"
    	};
        
        public systemsOverview () {
        	WindowUtilities.setNativeLookAndFeel( );
            
            /* name ausgeben */
            JLabel systemNameLabel = new JLabel( "Bitte wählen Sie ein System.", JLabel.LEFT );
            systemNameLabel.setBorder( BorderFactory.createTitledBorder("Name") );
            systemNameLabel.setSize( 300, 60 );
    	add(systemNameLabel, BorderLayout.PAGE_START);
    
    	/* beschreibung ausgeben */
    	JLabel systemDescLabel = new JLabel( "Sie haben noch kein System ausgewählt!", JLabel.LEFT );
    	systemDescLabel.setBorder( BorderFactory.createTitledBorder("Beschreibung") );
    	systemDescLabel.setSize( 300, 140 );
    	systemDescLabel.setVerticalAlignment( 0 );
    	add( systemDescLabel, BorderLayout.CENTER );
    
    	/* auswahlfeld ausgeben */
            JLabel systemListLabel = new JLabel( "", JLabel.LEFT );
            systemListLabel.setSize( 200, 130 );
    	JList systemList = new JList( names );
    	systemList.setFixedCellWidth( 200 );
            systemList.addListSelectionListener( new selectionListener( systemNameLabel, systemDescLabel, systemList ) );
    	systemListLabel.add( new JScrollPane( systemList ) );
            add( systemListLabel, BorderLayout.CENTER );
        }
        
        public static void main ( String args[] ) {
        	new systemsOverview( );
        }
    
    }
    
    final class selectionListener implements ListSelectionListener {
    	private final JLabel labelName, labelDesc;
    	private final JList list;
    	
    	public selectionListener( final JLabel systemNameLabel, final JLabel systemDescLabel, final JList systemList ) {
    		super();
    		this.labelName = systemNameLabel;
    		this.labelDesc = systemDescLabel;
    		this.list = systemList;
    	}
    	
    	public void valueChanged (ListSelectionEvent e) {
    		labelName.setText( " "+list.getSelectedValue() );
    		labelDesc.setText( " "+systemsOverview.descs[list.getSelectedIndex()] );
    	}
    }
    Btw.: Das "Schön machen" kommt später, wenn ich den Kram richtig verstanden habe.

    Schonmal im Vorraus vielen Dank für die Mühe, sich den Krams durchzulesen.
    mfg - sagg

  • #2
    http://java.sun.com/docs/books/tutor...ents/list.html

    Kommentar


    • #3
      Re: JList will nicht ins JPanel

      Original geschrieben von sagg
      Also falls jemand ein paar gute Seiten kennt, immer her damit.
      Ich nehme mal an, du beziehst dich auf diesen Punkt.
      Wenn ich da richtig liege: Danke dafür.

      Was aber gleichzeitig heissen will: Eine Lösung für mein Problem finde ich da auch nicht wirklich.
      mfg - sagg

      Kommentar


      • #4
        klar, dass es kein Fehler anzeigt, denn es gibt kein. Ein JList kann sich selbst nicht anzeigen, es ist ein Data Container, packt es in einem JScrollPane dann wirst du sehen

        Kommentar


        • #5
          Hm, aber das wird doch an dieser Stelle eigentlich getan:
          Code:
          systemListLabel.add( new JScrollPane( systemList ) );
          Oder? (Im Block "auswahlfeld ausgeben", 6. Zeile)

          Was mich eben daran wundert, ist, dass es in einem JFrame ohne diesem Tabbing funktioniert hat.

          *edit*

          Also ich habe jetzt nochmal alles, was nichts mit der JList zu tun hat, raus geschmissen. Die Funktion "systemsOverview" sieht jetzt nur noch so aus:

          Code:
          public systemsOverview () {
                  JLabel systemListLabel = new JLabel( "moep", JLabel.RIGHT );
                  systemListLabel.setSize( 200, 130 );
          		JList systemList = new JList( names );
          		systemListLabel.add( new JScrollPane( systemList ) );
          		add( systemListLabel, BorderLayout.CENTER );
              }
          Das einzigste, was angezeigt wird, ist "moep", sonst nichts...
          Zuletzt geändert von sagg; 03.05.2007, 21:55.
          mfg - sagg

          Kommentar

          Lädt...
          X