2013-03-07 75 views
0

我不明白爲什麼mediaPanelselectedMediaPanel沒有顯示在JFrame中。是什麼原因?兩個Jpanels沒有在Jframe中顯示

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Arrays; 
import java.util.List; 
import java.util.Vector; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.ListSelectionModel; 


public class MediaSelectionGUI { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     new MediaSelectionGUI(); 

    } 

    public MediaSelectionGUI(){ 

     final Situation situation = new Situation(); 

     JFrame guiFrame = new JFrame(); 

     //make sure the program exits when the frame closes 
     guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     guiFrame.setTitle("Communications Support Tool version 0.1"); 
     guiFrame.setSize(1000,500); 
     guiFrame.setLayout(new FlowLayout()); 


     //This will center the JFrame in the middle of the screen 
     guiFrame.setLocationRelativeTo(null); 

     Vector<Media> media_option = new Vector<Media>(Arrays.asList(new Media[]{Media.Chat,Media.E_mail,Media.Intranet,Media.Meeting,Media.Social_Media, Media.Telefon, Media.Video})); 
     Vector<Media> selected_media_option = new Vector<Media>(); 

     Zweck[] zweck_option = {Zweck.Anweisung, Zweck.Austausch, Zweck.Informieren, Zweck.Koordination}; 
     Ort[] ort_option = {Ort.Gleicher_Ort, Ort.Unterschiedlicher_Ort, Ort.Andere_Zeitzone}; 
     Anzahl[] anzahl_option = {Anzahl.Zwei_Personen, Anzahl.Klein_Gruppe, Anzahl.Publikum}; 

     //Create the second JPanel. Add a JLabel and JList and 
     final JPanel mediaPanel = new JPanel(null); 
     JLabel mediaLabel = new JLabel("All Media:"); 
     final JList<Media> media = new JList<Media>(media_option); 
     media.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
     media.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

     mediaPanel.add(mediaLabel); 
     mediaPanel.add(media); 
     mediaPanel.setVisible(true); 

     final JPanel selectedMediaPanel = new JPanel(null); 
     JLabel selectedmediaLabel = new JLabel("Selected Media:"); 
     final JList<Media> selected_media = new JList<Media>(selected_media_option); 
     selected_media.setLayoutOrientation(JList.HORIZONTAL_WRAP); 
     selected_media.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 

     selectedMediaPanel.add(selectedmediaLabel); 
     selectedMediaPanel.add(selected_media); 
     selectedMediaPanel.setVisible(true); 

     JButton select_button = new JButton("select"); 
     JButton deselect_button = new JButton("deselect"); 

     select_button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       // TODO Auto-generated method stub 
       List<Media> selected_media_option = media.getSelectedValuesList(); 
       for (Media medium: selected_media_option){ 
        selected_media.getSelectedValuesList().add(medium); 
       } 
      } 
     }); 


     deselect_button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       // TODO Auto-generated method stub 
       List<Media> selected_media_option = selected_media.getSelectedValuesList(); 
       for (Media medium: selected_media_option){ 
        media.getSelectedValuesList().add(medium); 
       } 
      } 
     }); 

     select_button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       // TODO Auto-generated method stub 
       List<Media> selected_media_option = media.getSelectedValuesList(); 
       for (Media medium: selected_media_option){ 
        situation.media_collection.add(medium); 
        System.out.println(medium); 
       } 
      } 
     }); 


     // Zweck Panel 
     final JPanel zweckPanel = new JPanel(); 
     JLabel zweckLabel = new JLabel("Zweck:"); 
     JComboBox<Zweck> zweck = new JComboBox<Zweck>(zweck_option); 
     zweckPanel.add(zweckLabel); 
     zweckPanel.add(zweck); 

    // Ort Panel 
     final JPanel ortPanel = new JPanel(); 
     JLabel ortLabel = new JLabel("Ort:"); 
     JComboBox<Ort> ort = new JComboBox<Ort>(ort_option);  
     ortPanel.add(ortLabel); 
     ortPanel.add(ort); 

    // Anzahl Panel 
     final JPanel anzahlPanel = new JPanel(); 
     JLabel anzahlLabel = new JLabel("Anzahl:"); 
     JComboBox<Anzahl> anzahl = new JComboBox<Anzahl>(anzahl_option); 
     ortPanel.add(anzahlLabel); 
     ortPanel.add(anzahl); 


     guiFrame.add(mediaPanel); 
     guiFrame.add(select_button); 
     guiFrame.add(deselect_button); 
     guiFrame.add(selectedMediaPanel); 
     guiFrame.add(zweckPanel); 
     guiFrame.add(ortPanel); 
     guiFrame.add(anzahlPanel); 

     guiFrame.setVisible(true); 
    } 

} 

回答

2

您遇到問題的主要原因是您將兩個具有空佈局的面板添加到使用佈局管理器的框架。

幀佈局管理器正在檢查這些面板的首選大小,它們返回0x0。所以,你面板顯示,他們剛剛的尺寸爲0x0

嘗試使用適當的佈局管理器的面板以及

+0

謝謝,我是一個Java GUI的新手。 – Bob 2013-03-07 20:34:04

1

在JPanel的構造函數中,要設置一個空的佈局管理,那麼組件將不尺寸。

只需從JPanel構造函數中刪除null即可。