2011-11-29 60 views
-3

您知道在iTunes中双击某首歌曲时,如何播放MP3文件。使Java JTable行打开文本文件

对于我的用户界面使用JTable,如何将行连接到应用程序文件系统中的文本文件,以便当我双击一行时,与该行关联的txt文件打开?

+1

没有downvote。你有没有尝试过什么..? – Mudassir

+2

你有什么问题?你知道如何使用MouseListener进行双击吗?你知道如何获得在表格中双击的单元格,以便可以打开文件名称吗?你知道如何阅读文件吗?你知道如何将文本文件加载到JTextArea中吗? – camickr

回答

7

点击任何一行,你需要有你的文件名以便打开它,在下面的代码中,我已经将文件名存储在最后一列中。我用鼠标点击打开记事本中的文件。

代码段:

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.io.IOException; 
import java.awt.Desktop; 
import javax.swing.JFrame; 
import javax.swing.JTable; 
import javax.swing.ListSelectionModel; 
import javax.swing.table.AbstractTableModel; 
import javax.swing.table.TableModel; 

public class JTableTest { 
JTable myTable; 

public JTableTest() { 
    JFrame frame = new JFrame("Double Click on Table Test"); 
    final String[] columnNames = {"S.No. ", "File Name", "File Path", ""}; 
    final Object[][] tableData = {{"1", "test1.txt", "C://test1.txt", "C:/Test/test1.txt"}, 
      {"2", "test2.txt", "C://test2.txt", "C:/Test/test2.txt"}, {"3", "test2.txt", "C://test3.txt", "C:/Test/test3.txt"},}; 

    TableModel dataModel = new AbstractTableModel() { 
     public int getColumnCount() { 
      return columnNames.length; 
     } 

     public int getRowCount() { 
      return tableData.length; 
     } 

     public Object getValueAt(int row, int col) { 
      return tableData[row][col]; 
     } 

     public String getColumnName(int column) { 
      return columnNames[column]; 
     } 

     public Class getColumnClass(int col) { 
      return getValueAt(0, col).getClass(); 
     } 

     public void setValueAt(Object aValue, int row, int column) { 
      tableData[row][column] = aValue; 
     } 
    }; 

    myTable = new JTable(dataModel); 
    myTable.getColumnModel().getColumn(3).setMaxWidth(0); 
    myTable.getColumnModel().getColumn(3).setMinWidth(0); 
    myTable.getColumnModel().getColumn(3).setPreferredWidth(0); 
    myTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    frame.getContentPane().add(myTable); 
    frame.pack(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    myTable.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 
      if (e.getClickCount() == 2) { 
       int selectedRow = myTable.getSelectedRow(); 
       try { 
        Desktop.getDesktop().open(new File((String) myTable.getValueAt(selectedRow, 3))); 
       } catch (IOException e1) { 
        e1.printStackTrace(); 
        } 
       } 
      } 
     }); 
    } 

    public static void main(String[] args) { 
     new JTableTest(); 
    } 
} 

希望这可以让你去。

+0

完成,感谢您的建议,对我来说很好的学习。 – mprabhat

+0

+1加入宽限期。 – trashgod

+0

伟大的编辑。 +1 .. –