天天看点

JAVA实现显示指定类型的文件的例子

实现:读取文件夹指定类型的文件,并显示到表格控件中。

应用:对于项目开发中的文件分类起到了抛砖引玉的作用。

效果图:

<a href="http://blog.51cto.com/attachment/201310/124437433.jpg" target="_blank"></a>

实现代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

<code>package</code> <code>com.lixiyu;</code>

<code>import</code> <code>java.awt.BorderLayout;</code>

<code>import</code> <code>java.awt.EventQueue;</code>

<code>import</code> <code>java.awt.GridBagConstraints;</code>

<code>import</code> <code>java.awt.GridBagLayout;</code>

<code>import</code> <code>java.awt.Insets;</code>

<code>import</code> <code>java.awt.event.ActionEvent;</code>

<code>import</code> <code>java.awt.event.ActionListener;</code>

<code>import</code> <code>java.io.File;</code>

<code>import</code> <code>java.sql.Date;</code>

<code>import</code> <code>javax.swing.JButton;</code>

<code>import</code> <code>javax.swing.JFileChooser;</code>

<code>import</code> <code>javax.swing.JFrame;</code>

<code>import</code> <code>javax.swing.JLabel;</code>

<code>import</code> <code>javax.swing.JPanel;</code>

<code>import</code> <code>javax.swing.JScrollPane;</code>

<code>import</code> <code>javax.swing.JTable;</code>

<code>import</code> <code>javax.swing.JTextField;</code>

<code>import</code> <code>javax.swing.border.EmptyBorder;</code>

<code>import</code> <code>javax.swing.event.CaretEvent;</code>

<code>import</code> <code>javax.swing.event.CaretListener;</code>

<code>import</code> <code>javax.swing.table.DefaultTableModel;</code>

<code>public</code> <code>class</code> <code>ListCustomTypeFile </code><code>extends</code> <code>JFrame {</code>

<code>    </code><code>/**</code>

<code>     </code><code>*</code>

<code>     </code><code>*/</code>

<code>    </code><code>private</code> <code>static</code> <code>final</code> <code>long</code> <code>serialVersionUID = -6263975104443132420L;</code>

<code>     </code><code>* 自定义扩展名过滤器</code>

<code>     </code><code>* @author DylanLee</code>

<code>    </code><code>private</code> <code>final</code> <code>class</code> <code>CustomFilter </code><code>implements</code> <code>java.io.FileFilter {</code>

<code>        </code><code>@Override</code>

<code>        </code><code>public</code> <code>boolean</code> <code>accept(File pathname) {</code>

<code>            </code><code>// 获取用户设置的指定扩展名</code>

<code>            </code><code>String extName = extNameField.getText();</code>

<code>            </code><code>if</code> <code>(extName == </code><code>null</code> <code>|| extName.isEmpty())</code>

<code>                </code><code>return</code> <code>false</code><code>;</code>

<code>            </code><code>if</code> <code>(!extName.startsWith(</code><code>"."</code><code>))</code><code>// 判断扩展名前缀</code>

<code>                </code><code>extName = </code><code>"."</code> <code>+ extName;</code><code>// 完事扩展名前缀</code>

<code>            </code><code>extName = extName.toLowerCase();</code>

<code>            </code><code>// 判断扩展名与过滤文件名是否符合要求</code>

<code>            </code><code>if</code> <code>(pathname.getName().toLowerCase().endsWith(extName))</code>

<code>                </code><code>return</code> <code>true</code><code>;</code>

<code>            </code><code>return</code> <code>false</code><code>;</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

<code>                                 </code> 

<code>    </code><code>private</code> <code>JPanel contentPane;</code>

<code>    </code><code>private</code> <code>JTextField extNameField;</code>

<code>    </code><code>private</code> <code>JTable table;</code>

<code>    </code><code>private</code> <code>File dir;</code>

<code>    </code><code>private</code> <code>JLabel label;</code>

<code>     </code><code>* Launch the application.</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>EventQueue.invokeLater(</code><code>new</code> <code>Runnable() {</code>

<code>            </code><code>public</code> <code>void</code> <code>run() {</code>

<code>                </code><code>try</code> <code>{</code>

<code>                    </code><code>ListCustomTypeFile frame = </code><code>new</code> <code>ListCustomTypeFile();</code>

<code>                    </code><code>frame.setVisible(</code><code>true</code><code>);</code>

<code>                </code><code>} </code><code>catch</code> <code>(Exception e) {</code>

<code>                    </code><code>e.printStackTrace();</code>

<code>                </code><code>}</code>

<code>            </code><code>}</code>

<code>        </code><code>});</code>

<code>     </code><code>* Create the frame.</code>

<code>    </code><code>public</code> <code>ListCustomTypeFile() {</code>

<code>        </code><code>setTitle(</code><code>"\u663E\u793A\u6307\u5B9A\u7C7B\u578B\u7684\u6587\u4EF6"</code><code>);</code>

<code>        </code><code>setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</code>

<code>        </code><code>setBounds(</code><code>100</code><code>, </code><code>100</code><code>, </code><code>450</code><code>, </code><code>300</code><code>);</code>

<code>        </code><code>contentPane = </code><code>new</code> <code>JPanel();</code>

<code>        </code><code>contentPane.setBorder(</code><code>new</code> <code>EmptyBorder(</code><code>5</code><code>, </code><code>5</code><code>, </code><code>5</code><code>, </code><code>5</code><code>));</code>

<code>        </code><code>contentPane.setLayout(</code><code>new</code> <code>BorderLayout(</code><code>0</code><code>, </code><code>0</code><code>));</code>

<code>        </code><code>setContentPane(contentPane);</code>

<code>                                     </code> 

<code>        </code><code>JPanel panel = </code><code>new</code> <code>JPanel();</code>

<code>        </code><code>contentPane.add(panel, BorderLayout.NORTH);</code>

<code>        </code><code>GridBagLayout gbl_panel = </code><code>new</code> <code>GridBagLayout();</code>

<code>        </code><code>gbl_panel.columnWidths = </code><code>new</code> <code>int</code><code>[] { </code><code>93</code><code>, </code><code>54</code><code>, </code><code>0</code> <code>};</code>

<code>        </code><code>gbl_panel.rowHeights = </code><code>new</code> <code>int</code><code>[] { </code><code>23</code><code>, </code><code>0</code><code>, </code><code>0</code> <code>};</code>

<code>        </code><code>gbl_panel.columnWeights = </code><code>new</code> <code>double</code><code>[] { </code><code>0.0</code><code>, </code><code>1.0</code><code>, Double.MIN_VALUE };</code>

<code>        </code><code>gbl_panel.rowWeights = </code><code>new</code> <code>double</code><code>[] { </code><code>0.0</code><code>, </code><code>0.0</code><code>, Double.MIN_VALUE };</code>

<code>        </code><code>panel.setLayout(gbl_panel);</code>

<code>        </code><code>JButton button = </code><code>new</code> <code>JButton(</code><code>"\u9009\u62E9\u6587\u4EF6\u5939"</code><code>);</code>

<code>        </code><code>button.addActionListener(</code><code>new</code> <code>ActionListener() {</code>

<code>            </code><code>public</code> <code>void</code> <code>actionPerformed(ActionEvent e) {</code>

<code>                </code><code>do_button_actionPerformed(e);</code>

<code>        </code><code>GridBagConstraints gbc_button = </code><code>new</code> <code>GridBagConstraints();</code>

<code>        </code><code>gbc_button.anchor = GridBagConstraints.NORTH;</code>

<code>        </code><code>gbc_button.gridx = </code><code>0</code><code>;</code>

<code>        </code><code>gbc_button.gridy = </code><code>0</code><code>;</code>

<code>        </code><code>panel.add(button, gbc_button);</code>

<code>        </code><code>label = </code><code>new</code> <code>JLabel(</code><code>"\u6587\u4EF6\u5939"</code><code>);</code>

<code>        </code><code>GridBagConstraints gbc_label = </code><code>new</code> <code>GridBagConstraints();</code>

<code>        </code><code>gbc_label.fill = GridBagConstraints.HORIZONTAL;</code>

<code>        </code><code>gbc_label.gridx = </code><code>1</code><code>;</code>

<code>        </code><code>gbc_label.gridy = </code><code>0</code><code>;</code>

<code>        </code><code>panel.add(label, gbc_label);</code>

<code>        </code><code>JLabel label_1 = </code><code>new</code> <code>JLabel(</code>

<code>                </code><code>"\u8F93\u5165\u6307\u5B9A\u6587\u4EF6\u6269\u5C55\u540D\u79F0\uFF1A"</code><code>);</code>

<code>        </code><code>GridBagConstraints gbc_label_1 = </code><code>new</code> <code>GridBagConstraints();</code>

<code>        </code><code>gbc_label_1.anchor = GridBagConstraints.EAST;</code>

<code>        </code><code>gbc_label_1.insets = </code><code>new</code> <code>Insets(</code><code>0</code><code>, </code><code>0</code><code>, </code><code>0</code><code>, </code><code>5</code><code>);</code>

<code>        </code><code>gbc_label_1.gridx = </code><code>0</code><code>;</code>

<code>        </code><code>gbc_label_1.gridy = </code><code>1</code><code>;</code>

<code>        </code><code>panel.add(label_1, gbc_label_1);</code>

<code>        </code><code>extNameField = </code><code>new</code> <code>JTextField();</code>

<code>        </code><code>extNameField.addCaretListener(</code><code>new</code> <code>CaretListener() {</code>

<code>            </code><code>public</code> <code>void</code> <code>caretUpdate(CaretEvent e) {</code>

<code>                </code><code>do_extNameField_caretUpdate(e);</code>

<code>        </code><code>extNameField.setText(</code><code>".gif"</code><code>);</code>

<code>        </code><code>GridBagConstraints gbc_extNameField = </code><code>new</code> <code>GridBagConstraints();</code>

<code>        </code><code>gbc_extNameField.insets = </code><code>new</code> <code>Insets(</code><code>0</code><code>, </code><code>0</code><code>, </code><code>5</code><code>, </code><code>0</code><code>);</code>

<code>        </code><code>gbc_extNameField.fill = GridBagConstraints.HORIZONTAL;</code>

<code>        </code><code>gbc_extNameField.gridx = </code><code>1</code><code>;</code>

<code>        </code><code>gbc_extNameField.gridy = </code><code>1</code><code>;</code>

<code>        </code><code>panel.add(extNameField, gbc_extNameField);</code>

<code>        </code><code>extNameField.setColumns(</code><code>10</code><code>);</code>

<code>        </code><code>JScrollPane scrollPane = </code><code>new</code> <code>JScrollPane();</code>

<code>        </code><code>contentPane.add(scrollPane, BorderLayout.CENTER);</code>

<code>        </code><code>table = </code><code>new</code> <code>JTable();</code>

<code>        </code><code>table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);</code>

<code>        </code><code>table.setModel(</code><code>new</code> <code>DefaultTableModel(</code><code>new</code> <code>Object[][] {}, </code><code>new</code> <code>String[] {</code>

<code>                </code><code>"\u6587\u4EF6\u540D\u79F0"</code><code>, </code><code>"\u6587\u4EF6\u5927\u5C0F"</code><code>,</code>

<code>                </code><code>"\u4FEE\u6539\u65E5\u671F"</code> <code>}) {</code>

<code>            </code><code>/**</code>

<code>                     </code><code>*</code>

<code>                     </code><code>*/</code>

<code>                    </code><code>private</code> <code>static</code> <code>final</code> <code>long</code> <code>serialVersionUID = 5274214559103654856L;</code>

<code>            </code><code>boolean</code><code>[] columnEditables = </code><code>new</code> <code>boolean</code><code>[] { </code><code>false</code><code>, </code><code>false</code><code>, </code><code>false</code> <code>};</code>

<code>                                         </code> 

<code>            </code><code>public</code> <code>boolean</code> <code>isCellEditable(</code><code>int</code> <code>row, </code><code>int</code> <code>column) {</code>

<code>                </code><code>return</code> <code>columnEditables[column];</code>

<code>        </code><code>table.getColumnModel().getColumn(</code><code>0</code><code>).setPreferredWidth(</code><code>220</code><code>);</code>

<code>        </code><code>table.getColumnModel().getColumn(</code><code>1</code><code>).setPreferredWidth(</code><code>85</code><code>);</code>

<code>        </code><code>table.getColumnModel().getColumn(</code><code>2</code><code>).setPreferredWidth(</code><code>110</code><code>);</code>

<code>        </code><code>scrollPane.setViewportView(table);</code>

<code>     </code><code>* 选择文件夹按钮的事件处理方法</code>

<code>     </code><code>* @param e</code>

<code>    </code><code>protected</code> <code>void</code> <code>do_button_actionPerformed(ActionEvent e) {</code>

<code>        </code><code>JFileChooser chooser = </code><code>new</code> <code>JFileChooser();</code><code>// 创建文件选择器</code>

<code>        </code><code>// 设置选择器的过滤器</code>

<code>        </code><code>chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);</code>

<code>        </code><code>chooser.showDialog(</code><code>this</code><code>, </code><code>null</code><code>);</code>

<code>        </code><code>dir = chooser.getSelectedFile();</code>

<code>        </code><code>getLabel().setText(dir.toString());</code>

<code>        </code><code>// 获取过滤后的符合条件的文件数组</code>

<code>        </code><code>listFiles();</code>

<code>     </code><code>* 显示文件夹中的文件</code>

<code>    </code><code>private</code> <code>void</code> <code>listFiles() {</code>

<code>        </code><code>if</code> <code>(dir == </code><code>null</code><code>)</code>

<code>            </code><code>return</code><code>;</code>

<code>        </code><code>// 获取符合条件的文件数组</code>

<code>        </code><code>File[] files = dir.listFiles(</code><code>new</code> <code>CustomFilter());</code>

<code>        </code><code>// 获取表格的数据模型</code>

<code>        </code><code>DefaultTableModel model = (DefaultTableModel) table.getModel();</code>

<code>        </code><code>model.setRowCount(</code><code>0</code><code>);</code>

<code>        </code><code>for</code> <code>(File file : files) {</code><code>// 遍历文件数组</code>

<code>            </code><code>// 创建表格行数据</code>

<code>            </code><code>Object[] row = { file.getName(), file.length(),</code>

<code>                    </code><code>new</code> <code>Date(file.lastModified()) };</code>

<code>            </code><code>model.addRow(row);</code><code>// 添加行数据到表格模型</code>

<code>    </code><code>protected</code> <code>void</code> <code>do_extNameField_caretUpdate(CaretEvent e) {</code>

<code>    </code><code>protected</code> <code>JLabel getLabel() {</code>

<code>        </code><code>return</code> <code>label;</code>

<code>}</code>

本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1308355,如需转载请自行联系原作者