📄 s16.htm
字号:
<p align="center"><b>例子 16-8 JFileChooser动作事件</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> JDialog dialog;<br> JButton button = new JButton("show file chooser ...");</p> <p> public Test() {<br> super("Simple File Chooser Application");<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> String title = chooser.getDialogTitle();</p> <p> if(title == null)<br> chooser.getUI().getDialogTitle(chooser);</p> <p> dialog = new JDialog((Frame)null, title, false);<br> <br> Container dialogContentPane = <br> dialog.getContentPane();</p> <p> dialogContentPane.setLayout(new BorderLayout());<br> dialogContentPane.add(chooser, <br> BorderLayout.CENTER);<br> <br> dialog.setTitle("Non-Modal File Chooser");</p> <p> dialog.pack();<br> dialog.setLocationRelativeTo(Test.this);<br> <br> dialog.setVisible(true); <br> }<br> });<br> chooser.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> String state = (String)e.getActionCommand();</p> <p> if(state.equals(JFileChooser.APPROVE_SELECTION)) {<br> File file = chooser.getSelectedFile();</p> <p> JOptionPane.showMessageDialog(<br> null, file.getPath());<br> }<br> else if(<br> state.equals(JFileChooser.CANCEL_SELECTION)) {<br> JOptionPane.showMessageDialog(<br> null, "Canceled");<br> }<br> // JFileChooser action listeners are notified<br> // when one either the approve button or<br> // cancel button is activated<br> dialog.setVisible(false);</p> <p> }<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> 16.1.8 JFileChooser类总结</p> <p> </p> <p> 16.1.9 AWT兼容</p> <p> </p> <p align="center"> </p> <p> 16.2 JColorChooser</p> <p> </p> <p align="center"><b>例16-9 在一个小应用程序中显示的颜色选取器</b></p> <hr size="1"> import javax.swing.*;<br> import javax.swing.colorchooser.*;<br> import javax.swing.event.*;<br> import java.awt.*; <p>public class Test extends JApplet {<br> JColorChooser chooser = new JColorChooser();<br> ColorSelectionModel model = chooser.getSelectionModel();</p> <p> public void init() {<br> getContentPane().add(chooser, BorderLayout.CENTER);</p> <p> model.addChangeListener(new ChangeListener() {<br> public void stateChanged(ChangeEvent e) {<br> showStatus("Color: " + chooser.getColor());<br> }<br> });<br> }<br> }</p> <hr noshade size="1"> <p> 16.2.1 在对话框中显示颜色选取器</p> <p> </p> <p align="center"><b>例16-10 在对话框中显示的颜色选取器</b></p> <hr size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> public void init() {<br> getContentPane().add(new Palette(), BorderLayout.CENTER);<br> }<br> }<br> class Palette extends JPanel {<br> private Color[] defaultColors = new Color[] {<br> Color.blue, Color.red, Color.yellow, Color.green,<br> Color.magenta, Color.darkGray, Color.white, Color.orange,<br> Color.pink, Color.cyan, Color.lightGray, Color.gray,<br> };</p> <p> public Palette() {<br> int columns = 3;</p> <p> setBorder(<br> BorderFactory.createTitledBorder("Color Palette"));</p> <p> setLayout(new GridLayout(columns,0,1,1));</p> <p> for(int i=0; i < defaultColors.length; ++i)<br> add(new ColorPatch(defaultColors[i]));<br> } <br> }<br> class ColorPatch extends JPanel {<br> JApplet applet;<br> Color selectedColor;</p> <p> public ColorPatch(Color color) {<br> setBorder(BorderFactory.createEtchedBorder());<br> setBackground(color);</p> <p> addMouseListener(new MouseAdapter() {<br> public void mousePressed(MouseEvent e) {<br> selectedColor = JColorChooser.showDialog(<br> ColorPatch.this, // parent comp<br> "Pick A Color", // dialog title<br> getBackground()); // initial color</p> <p> if(selectedColor == null) {<br> JOptionPane.showMessageDialog(ColorPatch.this,<br> "ColorChooser Canceled");<br> }<br> else {<br> setBackground(selectedColor);<br> repaint();</p> <p> JOptionPane.showMessageDialog(ColorPatch.this,<br> "Color Selected: " + selectedColor);<br> }<br> }<br> });<br> }<br> }</p> <hr noshade size="1"> <p> 16.2.2 定制颜色选取器</p> <p> </p> <p align="center"><b>例16-11 颜色选取器中的一个定制预览</b></p> <hr size="1"> import javax.swing.*;<br> import javax.swing.colorchooser.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> private JColorChooser chooser = new JColorChooser();<br> private JButton button = new JButton("Show Color Chooser");<br> private JDialog dialog;</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(button, BorderLayout.CENTER);</p> <p> chooser.setPreviewPanel(new PreviewPanel());</p> <p> button.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {</p> <p> if(dialog == null) <br> dialog = JColorChooser.createDialog(<br> Test.this, // parent comp<br> "Pick A Color", // dialog title<br> false, // modality<br> chooser, <br> null, null);</p> <p> dialog.setVisible(true);<br> }<br> });<br> }<br> class PreviewPanel extends JPanel {<br> public PreviewPanel() {<br> setPreferredSize(new Dimension(0,100));<br> setBorder(BorderFactory.createRaisedBevelBorder());<br> }<br> public void paintComponent(Graphics g) {<br> Dimension size = getSize();</p> <p> g.setColor(getForeground());<br> g.fillRect(0,0,size.width,size.height);<br> }<br> }<br> }</p> <hr noshade size="1"> <p align="center"><b>例16-12 实现一个定制颜色选取器面板</b></p> <hr size="1"> import javax.swing.*;<br> import javax.swing.event.*;<br> import javax.swing.colorchooser.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JApplet {<br> private JColorChooser chooser = new JColorChooser();<br> private AbstractColorChooserPanel colorPanels[] =<br> new AbstractColorChooserPanel[] {<br> new ListPanel(),<br> };<br> private JButton button = new JButton("Show Color Chooser");<br> private JDialog dialog;</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(button, BorderLayout.CENTER);</p> <p> chooser.setChooserPanels(colorPanels);</p> <p> button.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> if(dialog == null) <br> dialog = JColorChooser.createDialog(<br> Test.this, // parent comp<br> "Pick A Color", // dialog title<br> false, // modality<br> chooser, <br> null, null);</p> <p> dialog.setVisible(true);<br> }<br> });<br> }<br> }<br> class ListPanel extends AbstractColorChooserPanel <br> implements ListSelectionListener {<br> private JPanel labelPanel = new JPanel(),<br> listPanel = new JPanel();</p> <p> private JList redList = new JList(), blueList = new JList(), <br> greenList = new JList();</p> <p> private DefaultListModel redModel = new DefaultListModel(),<br> blueModel = new DefaultListModel(),<br> greenModel = new DefaultListModel();</p> <p> private boolean isAdjusting = false;</p> <p> public void updateChooser() {<br> if( ! isAdjusting) {<br> isAdjusting = true;</p> <p> Color color = getColorFromModel();<br> int r = color.getRed(), g = color.getGreen(), <br> b = color.getBlue();</p> <p> redList.setSelectedIndex(r);<br> redList.ensureIndexIsVisible(r);</p> <p> blueList.setSelectedIndex(b);<br> blueList.ensureIndexIsVisible(b);</p> <p> greenList.setSelectedIndex(g);<br> greenList.ensureIndexIsVisible(g);</p> <p> isAdjusting = false;<br> }<br> }<br> protected void buildChooser() {<br> redList.setFixedCellWidth(50);<br> greenList.setFixedCellWidth(50);<br> blueList.setFixedCellWidth(50);</p> <p> for(int i=0; i < 256; ++i) {<br> redModel.addElement(Integer.toString(i));<br> greenModel.addElement(Integer.toString(i));<br> blueModel.addElement(Integer.toString(i));<br> }</p> <p> redList.setModel(redModel);<br> greenList.setModel(greenModel);<br> blueList.setModel(blueModel);</p> <p> listPanel.setLayout(new GridLayout(0,3,10,0));</p> <p> listPanel.add(new JScrollPane(redList));<br> listPanel.add(new JScrollPane(blueList));<br> listPanel.add(new JScrollPane(greenList));</p> <p> labelPanel.setLayout(new GridLayout(0,3,10,0));</p> <p> labelPanel.add(new JLabel("Red"));<br> labelPanel.add(new JLabel("Blue"));<br> labelPanel.add(new JLabel("Green"));</p> <p> setLayout(new BorderLayout());<br> add(labelPanel, BorderLayout.NORTH);<br> add(listPanel, BorderLayout.CENTER);</p> <p> redList.addListSelectionListener(this);<br> greenList.addListSelectionListener(this);<br> blueList.addListSelectionListener(this);<br> }<br> public void valueChanged(ListSelectionEvent e) {<br> int r = redList.getSelectedIndex(),<br> b = blueList.getSelectedIndex(),<br> g = greenList.getSelectedIndex();</p> <p> if(r != -1 && g != -1 && b != -1)<br> getColorSelectionModel().setSelectedColor(<br> new Color(r,g,b));<br> }<br> public String getDisplayName() {<br> return "display name";<br> }<br> public Icon getSmallDisplayIcon() {<br> return null;<br> }<br> public Icon getLargeDisplayIcon() {<br> return null;<br> }<br> }</p> <hr noshade size="1"> <p> </p> <p> 16.2.3 JColorChooser属性</p> <p> </p> <p> 16.2.4 JColorChooser事件</p> <p> </p> <p> 16.2.5 JColorChooser类总结</p> <p> </p> <p> 16.2.6 AWT兼容</p> <p> </p> <p> 16.3 本章回顾</p> <p> </p> <p> </p> <p> [<a href="index.html" target="_self">目录</a>][<a href="s15.htm">上一页</a>][<a href="s17.htm">下一页</a>](飒龙收藏/2002.5.18) </p> <p> </p> </td> </tr> </tbody> </table> </td> </tr></tbody></table><script language="javascript">bottomprint()</script></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -