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

📄 s16.htm

📁 java图形设计卷2 swing
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up.js"></SCRIPT><SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up-all.js"></SCRIPT><html><head><title>易都网--Java 2 图形设计卷Ⅱ:SWING</title><LINK rel="stylesheet" href="../../../_public/javaa.css"><meta http-equiv="Content-Type" content="text/html; charset=GBK"><script language="JavaScript" src="../../../_public/javaa.js"></script><meta name="keywords" content="Java,JSP,ASP,PHP,J2EE,EJB,JavaScript,C/C++,ASM,CSS,HTML,XML,网络安全,MySQL,ACCESS"></head><body bgcolor="#FFFFFF"><table border=0 cellpadding=0 cellspacing=0 width="100%">  <tbody>   <script language="javascript">print2()</script>  <tr>     <td width="100%">       <table bgcolor=#EEEEEE border=0 cellpadding=3 cellspacing=0 width="100%">        <tbody>         <tr>           <td class=f1 id=thetd width="100%">             <p>[<a href="index.html" target="_self">目录</a>][<a href="s15.htm">上一页</a>][<a href="s17.htm">下一页</a>]</p>            <p align="center"> <b>第16章 选取器</b></p>            <p>  本章介绍两个Swing选取器组件,它们是:JFileChooser和JColorChooser,它们分别用于选取文件和颜色。</p>            <p> <b>16.1 JFileChooser</b></p>            <p>  文件选取器(与选项窗格一样,参见14.3节“JOptionPane”)是放置在对话框中的轻量组件。一旦创建了一个JFileChooser实例,就可以把这个实例添加到一个对话框中。而且,JFileChooser类还提供了一些方法,这些方法把已存在的文件添加到一个模态对话框中。并且显示这个对话框。这些方法返回一个integer值,指出是激活了选取器的批准按钮还是清除了这个对话框。<br>                文件选取器支持三种显示模式:只显示文件、只显示目录和显示文件及目录。另外,文件选取器还支持单文件选取和多文件选取(Swing1.1FCS不完全支持多文件选取。)<br>                可以用许多不同的方法来定制文件选取器,如图16-1所示。图16-1中的上图显示调用JFileChooser.showSaveDialog()后显示的标准对话框。图16-1             </p>            <p align="center"><b>例子 16-1 一个简单的文件选取器例子</b></p>            <hr size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.File;<br>            import javax.swing.*;<br>            import javax.swing.filechooser.*;<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><br>              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> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int state = chooser.showOpenDialog(null);<br>              File file = chooser.getSelectedFile();</p>            <p> if(file != null &amp;&amp;<br>              state == JFileChooser.APPROVE_OPTION) {<br>              JOptionPane.showMessageDialog(<br>              null, file.getPath());<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>              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>&nbsp; </p>            <p> <b>16.1.1 文件选取器类型</b></p>            <p align="center"><b>例子 16-2 缺省的文件选取器类型</b></p>            <hr size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.File;<br>            import javax.swing.*;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              JComboBox comboBox = new JComboBox();<br>              JButton button = new JButton(&quot;show file chooser ...&quot;);</p>            <p> public Test() {<br>              super(&quot;Standard File Chooser Types&quot;);<br>              Container contentPane = getContentPane();</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(comboBox);<br>              contentPane.add(button); </p>            <p> comboBox.addItem(&quot;OPEN_DIALOG&quot;);<br>              comboBox.addItem(&quot;SAVE_DIALOG&quot;);<br>              comboBox.addItem(&quot;custom dialog&quot;);</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              String message = &quot;CANCELED&quot;;<br>              int state = showChooser(<br>              (String)comboBox.getSelectedItem());<br>              File file = chooser.getSelectedFile();</p>            <p> if(file != null &amp;&amp; <br>              state == JFileChooser.APPROVE_OPTION) {<br>              message = chooser.getApproveButtonText() + <br>              &quot; &quot; + file.getPath();<br>              }<br>              JOptionPane.showMessageDialog(null, message);<br>              }<br>              });<br>              }<br>              private int showChooser(String s) {<br>              int state; </p>            <p> if(s.equals(&quot;OPEN_DIALOG&quot;)) {<br>              state = chooser.showOpenDialog(null);<br>              }<br>              else if(s.equals(&quot;SAVE_DIALOG&quot;)) {<br>              state = chooser.showSaveDialog(null);<br>              }<br>              else { // custom dialog<br>              String string = JOptionPane.showInputDialog(<br>              null, <br>              &quot;Button/Title String:&quot;);</p>            <p> chooser.setApproveButtonMnemonic(string.charAt(1));<br>              state = chooser.showDialog(Test.this, string);<br>              }<br>              return state;<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>&nbsp;</p><p> 16.1.2 可访问组件</p>            <p>&nbsp;</p>            <p align="center"><b>例子 16-3 一个图像预览器可访问组件</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.*;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              ImagePreviewer previewer = new ImagePreviewer();</p>            <p><br>              public Test() {<br>              super(&quot;Accessory Components&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> setAccessoryComponent();</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              chooser.showOpenDialog(null);<br>              }<br>              });<br>              }<br>              private void setAccessoryComponent() {<br>              JPanel previewPanel = new JPanel();</p>            <p> previewPanel.setLayout(new BorderLayout());<br>              previewPanel.add(new JLabel(&quot;Image Previewer&quot;, <br>              SwingConstants.CENTER),<br>              BorderLayout.NORTH);</p>            <p> previewPanel.add(previewer, BorderLayout.CENTER);</p>            <p> previewer.setPreferredSize(new Dimension(200,0));<br>              previewer.setBorder(BorderFactory.createEtchedBorder());</p>            <p> chooser.setAccessory(previewPanel);</p>            <p> new ImagePreviewerAccessoryAdapter(chooser, previewer);<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.addWindowListener(new WindowAdapter() {<br>              public void windowClosed(WindowEvent e) {<br>              System.exit(0);<br>              }<br>              });<br>              }<br>              }<br>              class ImagePreviewerAccessoryAdapter extends Object {<br>              public ImagePreviewerAccessoryAdapter(<br>              JFileChooser chooser,<br>              final ImagePreviewer previewer) {<br>              chooser.addPropertyChangeListener(<br>              new PropertyChangeListener() {<br>              public void propertyChange(PropertyChangeEvent e) {<br>              if(e.getPropertyName().equals(<br>              JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)) {<br>              previewer.update((File)e.getNewValue());<br>              }<br>              }<br>              });<br>              }<br>              }<br>              class ImagePreviewer extends JComponent {<br>              private ImageIcon icon;</p>            <p> public void update(File file) {<br>              Dimension size = getSize();<br>              Insets insets = getInsets();</p>            <p> icon = new ImageIcon(file.getPath());<br>              <br>              icon.setImage(icon.getImage().getScaledInstance(<br>              size.width - insets.left - insets.right, <br>              size.height - insets.top - insets.bottom, <br>              Image.SCALE_SMOOTH));</p>            <p> if(isShowing()) {<br>              repaint();<br>              }<br>              }<br>              public void paintComponent(Graphics g) {<br>              Insets insets = getInsets();</p>            <p> super.paintComponent(g);</p>            <p> if(icon != null)<br>              icon.paintIcon(this, g, insets.left, insets.top);<br>              }<br>              }</p>            <hr noshade size="1">            <p> 16.1.3 过滤文件类型</p>            <p>&nbsp;</p>            <p align="center"><b>例子 16-4 一个文本文件过滤器和预览器</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.util.*;<br>            import java.net.*;            <p>public class Test extends JFrame {<br>              JFileChooser chooser = new JFileChooser();<br>              TextPreviewer previewer = new TextPreviewer();<br>              JPanel 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(250,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;Accessory Components&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> chooser.setAccessory(previewPanel);<br>              chooser.addPropertyChangeListener(<br>              new PropertyChangeListener() {<br>              public void propertyChange(PropertyChangeEvent e) {<br>              if(e.getPropertyName().equals(<br>              JFileChooser.SELECTED_FILE_CHANGED_PROPERTY))<br>              previewer.update((File)e.getNewValue());<br>              }<br>              });<br>              button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              chooser.showOpenDialog(null);<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>              class TextPreviewer extends JComponent {<br>              private ImageIcon icon;<br>              private JTextArea textArea = new JTextArea();</p>            <p> public TextPreviewer() {<br>              setBorder(BorderFactory.createEtchedBorder());<br>              setLayout(new BorderLayout());<br>              add(new JScrollPane(textArea), BorderLayout.CENTER);<br>              }<br>              public void update(File file) {<br>              textArea.setText(contentsOfFile(file));</p>            <p> if(isShowing()) {<br>              textArea.revalidate();<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>

⌨️ 快捷键说明

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