⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s16.htm

📁 java图形设计卷2 swing
💻 HTM
📖 第 1 页 / 共 3 页
字号:
              }<br>              } <br>              catch (java.io.IOException ex) {<br>              s = &quot;Could not load file&quot;;<br>              }<br>              return s;<br>              }<br>              }</p>            <hr noshade size="1">            <p align="center"><b>例子 16-5 多种文件过滤器</b></p>            <hr size="1">            import javax.swing.*;<br>            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.beans.*;<br>            import java.io.*;<br>            import java.net.URL;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              TextPreviewer previewer = new TextPreviewer();<br>              PreviewPanel previewPanel = new PreviewPanel();</p>            <p> class PreviewPanel extends JPanel {<br>              public PreviewPanel() {<br>              JLabel label = new JLabel(&quot;Text Previewer&quot;,<br>              SwingConstants.CENTER);<br>              setPreferredSize(new Dimension(350,0));<br>              setBorder(BorderFactory.createEtchedBorder());</p>            <p> setLayout(new BorderLayout());</p>            <p> label.setBorder(BorderFactory.createEtchedBorder());<br>              add(label, BorderLayout.NORTH);<br>              add(previewer, BorderLayout.CENTER);<br>              }<br>              }<br>              public Test() {<br>              super(&quot;Filtering Files&quot;);<br>              <br>              Container contentPane = getContentPane();<br>              JButton button = new JButton(&quot;Select A File&quot;);</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(button); </p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int state = chooser.showOpenDialog(null);<br>              String s = &quot;CANCELED&quot;;</p>            <p> if(state == JFileChooser.APPROVE_OPTION) {<br>              s = &quot;File Selected: &quot; + <br>              chooser.getSelectedFile().getPath();<br>              }<br>              JOptionPane.showMessageDialog(null, s);<br>              }<br>              });</p>            <p> chooser.setAccessory(previewPanel);<br>              chooser.addChoosableFileFilter(new TextFilter());<br>              chooser.addChoosableFileFilter(new JavaCodeFilter());</p>            <p> chooser.addPropertyChangeListener(<br>              new PropertyChangeListener() {<br>              public void propertyChange(PropertyChangeEvent e) {<br>              if(e.getPropertyName().equals(<br>              JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {<br>              previewer.configure((File)e.getNewValue());<br>              }<br>              }<br>              });<br>              }<br>              public static void main(String a[]) {<br>              JFrame f = new Test();<br>              f.setBounds(300, 300, 300, 75);<br>              f.setVisible(true);</p>            <p> f.setDefaultCloseOperation(<br>              WindowConstants.DISPOSE_ON_CLOSE);</p>            <p> f.addWindowListener(new WindowAdapter() {<br>              public void windowClosed(WindowEvent e) {<br>              System.exit(0);<br>              }<br>              });<br>              }<br>              }<br>              abstract class SuffixAwareFilter <br>              extends javax.swing.filechooser.FileFilter {<br>              public String getSuffix(File f) {<br>              String s = f.getPath(), suffix = null;<br>              int i = s.lastIndexOf('.');</p>            <p> if(i &gt; 0 &amp;&amp; i &lt; s.length() - 1)<br>              suffix = s.substring(i+1).toLowerCase();</p>            <p> return suffix;<br>              }<br>              public boolean accept(File f) {<br>              return f.isDirectory();<br>              }<br>              }<br>              class ImageFilter extends SuffixAwareFilter {<br>              public boolean accept(File f) {<br>              boolean accept = super.accept(f);</p>            <p> if( ! accept) {<br>              String suffix = getSuffix(f);</p>            <p> if(suffix != null)<br>              accept = super.accept(f) || suffix.equals(&quot;jpg&quot;)<br>              || suffix.equals(&quot;gif&quot;);<br>              }<br>              return accept;<br>              }<br>              public String getDescription() {<br>              return &quot;Java Source Code Files(*.java)&quot;;<br>              }<br>              }<br>              class JavaCodeFilter extends SuffixAwareFilter {<br>              public boolean accept(File f) {<br>              boolean accept = super.accept(f);</p>            <p> if( ! accept) {<br>              String suffix = getSuffix(f);</p>            <p> if(suffix != null)<br>              accept = super.accept(f) || suffix.equals(&quot;java&quot;);<br>              }<br>              return accept;<br>              }<br>              public String getDescription() {<br>              return &quot;Java Source Code Files(*.java)&quot;;<br>              }<br>              }<br>              class TextFilter extends SuffixAwareFilter {<br>              public boolean accept(File f) {<br>              String suffix = getSuffix(f);</p>            <p> if(suffix != null)<br>              return super.accept(f) || suffix.equals(&quot;txt&quot;);</p>            <p> return false;<br>              }<br>              public String getDescription() {<br>              return &quot;Text Files(*.txt)&quot;;<br>              }<br>              }<br>              class TextPreviewer extends JComponent {<br>              private JTextArea textArea = new JTextArea();<br>              private JScrollPane scrollPane = new JScrollPane(textArea);</p>            <p> public TextPreviewer() {<br>              textArea.setEditable(false);</p>            <p> setBorder(BorderFactory.createEtchedBorder());<br>              setLayout(new BorderLayout());<br>              add(scrollPane, BorderLayout.CENTER);<br>              }<br>              public void configure(File file) {<br>              textArea.setText(contentsOfFile(file));</p>            <p> SwingUtilities.invokeLater(new Runnable() {<br>              public void run() {<br>              JViewport vp = scrollPane.getViewport();</p>            <p> vp.setViewPosition(new Point(0,0));<br>              }<br>              });<br>              }<br>              static String contentsOfFile(File file) {<br>              String s = new String();<br>              char[] buff = new char[50000];<br>              InputStream is;<br>              InputStreamReader reader;<br>              URL url;</p>            <p> try {<br>              reader = new FileReader(file);</p>            <p> int nch;</p>            <p> while ((<br>              nch = reader.read(buff, 0, buff.length)) != -1) {<br>              s = s + new String(buff, 0, nch);<br>              }<br>              } <br>              catch (java.io.IOException ex) {<br>              s = &quot;Could not load file&quot;;<br>              }<br>              return s;<br>              }<br>              }</p>            <hr noshade size="1">            <p>&nbsp;</p>            <p> 16.1.4 文件视图</p>            <p>&nbsp;</p>            <p align="center"><b>例子 16-6 一个定制的文件视图</b></p>            <hr size="1">            import javax.swing.*;<br>            import javax.swing.filechooser.FileView;<br>            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.*;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              JButton button = new JButton(&quot;show file chooser ...&quot;);</p>            <p> public Test() {<br>              super(&quot;Custom File View Example&quot;);<br>              Container contentPane = getContentPane();</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(button); </p>            <p> chooser.setFileView(new CustomFileView());</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int state = chooser.showSaveDialog(null);<br>              File file = chooser.getSelectedFile();<br>              String s = &quot;CANCELED&quot;;</p>            <p> if(state == JFileChooser.APPROVE_OPTION) <br>              s = &quot;File: &quot; + file.getPath();</p>            <p> JOptionPane.showMessageDialog(null, s);<br>              }<br>              });<br>              }<br>              public static void main(String args[]) {<br>              JFrame f = new Test();<br>              f.setBounds(300,300,350,100);<br>              f.setVisible(true);</p>            <p> f.setDefaultCloseOperation(<br>              WindowConstants.DISPOSE_ON_CLOSE);</p>            <p> f.addWindowListener(new WindowAdapter() {<br>              public void windowClosed(WindowEvent e) {<br>              System.exit(0); <br>              }<br>              });<br>              }<br>              }<br>              class CustomFileView extends FileView {<br>              private Icon fileIcon = new ImageIcon(&quot;file.gif&quot;), <br>              directoryIcon = new ImageIcon(&quot;folder.gif&quot;),<br>              imageIcon = new ImageIcon(&quot;photo.jpg&quot;);</p>            <p> public String getName(File f) { return null; }<br>              public String getDescription(File f) { return null; }<br>              public String getTypeDescription(File f) { return null; }</p>            <p> public Icon getIcon(File f) {<br>              Icon icon = null;</p>            <p> if(isImage(f)) icon = imageIcon;<br>              else if(f.isDirectory()) icon = directoryIcon;<br>              else icon = fileIcon;</p>            <p> return icon;<br>              }<br>              public Boolean isTraversable(File f) {<br>              Boolean b = null;</p>            <p> if(f.getPath().equals(&quot;D:\\file.txt&quot;)) {<br>              b = new Boolean(false);<br>              }<br>              else if(f.getPath().equals(&quot;D:\\books&quot;)) {<br>              b = new Boolean(false);<br>              }<br>              return b == null ? new Boolean(true) : b;<br>              }<br>              private boolean isImage(File f) {<br>              String suffix = getSuffix(f);<br>              boolean isImage = false;</p>            <p> if(suffix != null) {<br>              isImage = suffix.equals(&quot;gif&quot;) || <br>              suffix.equals(&quot;bmp&quot;) ||<br>              suffix.equals(&quot;jpg&quot;);<br>              }<br>              return isImage;<br>              }<br>              private String getSuffix(File file) {<br>              String filestr = file.getPath(), suffix = null;<br>              int i = filestr.lastIndexOf('.');</p>            <p> if(i &gt; 0 &amp;&amp; i &lt; filestr.length()) {<br>              suffix = filestr.substring(i+1).toLowerCase(); <br>              }<br>              return suffix;<br>              }<br>              }</p>            <hr noshade size="1">            <p> 16.1.5 多文件选取</p>            <p>&nbsp;</p>            <p align="center"><b>例子 16-7 文件选取器的多文件选取</b></p>            <hr size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.File;<br>            import javax.swing.*;<br>            import java.beans.*;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              JButton button = new JButton(&quot;show file chooser ...&quot;);</p>            <p> public Test() {<br>              super(&quot;Simple File Chooser Application&quot;);<br>              Container contentPane = getContentPane();</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(button); </p>            <p> chooser.setMultiSelectionEnabled(true);</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int state = chooser.showOpenDialog(null);<br>              File[] files = chooser.getSelectedFiles();<br>              String[] filenames = getFilenames(files);</p>            <p> if(filenames != null &amp;&amp;<br>              state == JFileChooser.APPROVE_OPTION) {<br>              JOptionPane.showMessageDialog(null,filenames);<br>              }<br>              else if(state == JFileChooser.CANCEL_OPTION) {<br>              JOptionPane.showMessageDialog(<br>              null, &quot;Canceled&quot;);<br>              }<br>              else if(state == JFileChooser.ERROR_OPTION) {<br>              JOptionPane.showMessageDialog(<br>              null, &quot;Error!&quot;);<br>              }<br>              }<br>              });<br>              }<br>              private String[] getFilenames(File[] files) {<br>              String[] filenames = null;<br>              int numFiles = files.length;</p>            <p>System.out.println(numFiles);</p>            <p> if(files.length &gt; 0) {<br>              filenames = new String[numFiles];</p>            <p> for(int i=0; i &lt; numFiles; ++i) {<br>              filenames[i] = files[i].getPath();<br>              System.out.println(filenames[i]);<br>              }<br>              }<br>              return filenames;<br>              }<br>              public static void main(String args[]) {<br>              JFrame f = new Test();<br>              f.setBounds(300,300,350,100);<br>              f.setVisible(true);</p>            <p> f.setDefaultCloseOperation(<br>              WindowConstants.DISPOSE_ON_CLOSE);<br>              <br>              f.addWindowListener(new WindowAdapter() {<br>              public void windowClosed(WindowEvent e) {<br>              System.exit(0); <br>              }<br>              });<br>              }<br>              }</p>            <hr noshade size="1">            <p> 16.1.6 JFileChooser属性</p>            <p>&nbsp;</p>            <p> 16.1.7 JFileChooser事件</p>            <p>&nbsp;</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -