2012-03-04 28 views
1

因爲我是java swing的新手,我在JFileChooser與JList集成方面遇到了一些困難。我的目標是從對話框(JFileChooser)中選擇一個文件,然後單擊'添加',以便它自動添加到JList中,並使用'remove'添加相同的機制。我試着通過幾個教程和一些提示,但它的工作。如果你們中的任何一位能夠幫助我完成這一步,那將是非常棒的。 在此先感謝.. !!通過jFileChoser添加一個文件到jList

package examples; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 

import javax.swing.DefaultListModel; 
import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JLayeredPane; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollBar; 
import javax.swing.JSplitPane; 
//import javax.swing.SwingConstants; 
class SplitPane extends JFrame 
{  

    private static final long serialVersionUID = 1L;  
    private JSplitPane splitPaneV;  
    private JSplitPane splitPaneH;  
    private JLayeredPane panel1;  
    private JPanel panel2;  
    private JPanel panel3;  
    private JButton add; 
    private JButton remove; 
    private JScrollBar scrollBar; 
    private JList list; 


    public SplitPane() 
    { 
     setTitle("AdditionalLoaderInformation");   
     setBackground(Color.blue);    
     JPanel topPanel = new JPanel();   
     topPanel.setLayout(new BorderLayout());   
     topPanel.setPreferredSize(new Dimension(700, 500));   
     getContentPane().add(topPanel); 

     // Create the panels   
     createPanel1();   
     createPanel2();   
     createPanel3();  

     // Create a splitter pane   
     splitPaneV = new JSplitPane(JSplitPane.VERTICAL_SPLIT);   
     topPanel.add(splitPaneV, BorderLayout.CENTER);   
     splitPaneH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);   
     splitPaneH.setLeftComponent(panel1);   
     splitPaneH.setRightComponent(panel2);   
     splitPaneV.setLeftComponent(splitPaneH);   
     splitPaneV.setRightComponent(panel3); 

     scrollBar = new JScrollBar(); 
     scrollBar.setOrientation(JScrollBar.HORIZONTAL); 
     panel3.add(scrollBar, BorderLayout.SOUTH); 


     list = new JList(); 
     panel3.add(list, BorderLayout.CENTER); 
     }  
    public void createPanel1() 
    {   
     panel1 = new JLayeredPane();   
     panel1.setLayout(new BorderLayout()); 

    } 


    public void createPanel2() 
    {   
     panel2 = new JPanel(); 

     add = new JButton("ADD"); 
     final JFileChooser fileChooser = new JFileChooser(); 
     fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 

     add.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
        ************************************ 

        } 
       }); 


     panel2.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); 
     panel2.add(add); 

     remove = new JButton("REMOVE"); 
     remove.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
      removeActionPerformed(e); 
      } 

      private void removeActionPerformed(ActionEvent e) { 
       // TODO Auto-generated method stub 

      } 
     }); 
     panel2.add(remove);   



     }    

      public void createPanel3() 
      {  
       panel3 = new JPanel();  
       panel3.setLayout(new BorderLayout());  
       panel3.setPreferredSize(new Dimension(400, 100));  
       panel3.setMinimumSize(new Dimension(100, 50));   
       final JFileChooser fileChooser = new JFileChooser(); 
       fileChooser.setMultiSelectionEnabled(true); 
       //fileChooser.showOpenDialog(fileChooser); 
       fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
       fileChooser .setDialogTitle("OPEN"); 
       panel3.add(fileChooser, BorderLayout.NORTH); 

       //fileChooser.addActionListener(new ActionListener() 
       // {   
        // public void actionPerformed(ActionEvent e) 
        //{    




        // }  
        //});  
       } 

     public static void main(String args[]) {   
      // Create an instance of the test application   
      SplitPane mainFrame = new SplitPane();   
      mainFrame.pack();   
      mainFrame.setVisible(true);  
      } 
     } 
+5

告訴我們你先試了一下。 – 2012-03-04 16:55:06

+0

如果您可以查看我已經嘗試過的內容,這將有所幫助。我已將我的代碼附加到上面的第一個查詢中。提前致謝! – dmurali 2012-03-04 18:29:14

回答

2

當你在你的選擇器的操作偵聽器,一個新的文件名,here所示,將其添加到(或刪除)名單的車型,如本example

附錄:要在JList顯示該文件的內容,你需要使用text components之一創建一個合適的renderer

+0

感謝您的回覆..!可能我在查詢中不夠清楚,我實際上希望將文件本身複製到JList中,以便添加更多內容並刪除添加內容。例如,當我選擇一個名爲random.txt的文件時,我想將這個文件複製到JList中。你認爲,這是可能的嗎?如果是的話,你能給我一個有一些例子的鏈接嗎? – dmurali 2012-03-04 23:19:19

+0

是的,我已經鏈接到上面的相關教程。隨着它的發展,你可以更新你的問題[sscce](http://sscce.org/)。 – trashgod 2012-03-04 23:46:00

+0

謝謝:)它的工作!我現在能夠將文件添加到JList。 – dmurali 2012-03-05 18:53:23

2
  1. the JFileChooser tutorial
  2. 如果上述步驟是不夠的,看看在JFileChooser類Javadoc並注意APPROVE_OPTIONgetSelectedFile方法。這應該讓你獲得文件
  3. 閱讀the JList tutorial
  4. 如果上述步驟是不夠的,看看在JListListModel可用的API,並且更具體地默認實現DefaultListModel包含addremove方法
+0

感謝您的快速響應!我已將我的代碼添加到我的初始查詢中。我請求你好好看看它,讓我知道我該如何處理它。提前致謝! – dmurali 2012-03-04 18:02:55