您知道在iTunes中雙擊某首歌曲時,如何播放MP3文件。使Java JTable行打開文本文件
對於我的用戶界面使用JTable,如何將行連接到應用程序文件系統中的文本文件,以便當我雙擊一行時,與該行關聯的txt文件打開?
您知道在iTunes中雙擊某首歌曲時,如何播放MP3文件。使Java JTable行打開文本文件
對於我的用戶界面使用JTable,如何將行連接到應用程序文件系統中的文本文件,以便當我雙擊一行時,與該行關聯的txt文件打開?
點擊任何一行,你需要有你的文件名以便打開它,在下面的代碼中,我已經將文件名存儲在最後一列中。我用鼠標點擊打開記事本中的文件。
代碼段:
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();
}
}
希望這可以讓你去。
沒有downvote。你有沒有嘗試過什麼..? – Mudassir
你有什麼問題?你知道如何使用MouseListener進行雙擊嗎?你知道如何獲得在表格中雙擊的單元格,以便可以打開文件名稱嗎?你知道如何閱讀文件嗎?你知道如何將文本文件加載到JTextArea中嗎? – camickr