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

📄 s18.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="s17.htm">上一页</a>][<a href="s19.htm">下一页</a>]</p>            <p align="center"><b>第18章 组合框</b></p>            <p>  由JComboBox类实现的组合框是由一个可编辑区(缺省时是一个文本区)和一个可选取项的下拉列表组成的。因此,我们采取把它与JList比较的方式来介绍JComboBox.</p>            <p> <b>18.1 JComboBox与JList的比较</b></p>            <p>  JList和ComboBox很相似,因为这两个组件都显示一个项列表。因此,它们都有扩展ListModel接口的模型。而且,这两个组件都有绘制器,这些绘制器通过实现ListCellBenderer接口来绘制列表单元。<br>                但是,列表和组合框在施工方面还是有差别的。列表单是不可编辑的,但是组合框可以配备一个编辑器。JComboBox组件把编辑工作交给实现ComboBoxEdit接口的一个对象来处理。<br>                列表支持三个选取模式,并把选取工作实现ListSelectionModel接口的一个对象来处理。组合框在一个时刻只有一个可选取的项,而且选取工作由组合框模型来处理。另一方面,组合框支持键选取,即在某项上按下一下键就可以选取这个项,但列表不能这样做。             </p>            <p> 18.2 JComboBox组件</p>            <p>&nbsp;</p>            <p align="center"><b>例18-1 可编辑组合框和不可编辑组合框</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;            <p>public class Test extends JApplet {<br>              private JCheckBox checkBox = new JCheckBox(&quot;Editable&quot;);<br>              private JComboBox comboBox = new JComboBox();</p>            <p> public void init() {<br>              Container contentPane = getContentPane();</p>            <p> comboBox.addItem(&quot;Top&quot;);<br>              comboBox.addItem(&quot;Center&quot;);<br>              comboBox.addItem(&quot;Bottom&quot;);</p>            <p> checkBox.setSelected(comboBox.isEditable());</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(checkBox);<br>              contentPane.add(comboBox);</p>            <p> checkBox.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              comboBox.setEditable(checkBox.isSelected());<br>              }<br>              });<br>              comboBox.getEditor().addActionListener(<br>              new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              System.out.println(&quot;here&quot; + <br>              comboBox.getSelectedItem());<br>              }<br>              });<br>              }<br>              public static void main(String args[]) {<br>              final JFrame f = new JFrame();<br>              JApplet applet = new Test();</p>            <p> applet.init();</p>            <p> f.setContentPane(applet.getContentPane());<br>              f.setBounds(100,100,308,199);<br>              f.setTitle(&quot;An Application&quot;);<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>              }</p>            <hr size="1" noshade>            <p> 18.3 组合框模型</p>            <p>&nbsp;</p>            <p> 18.3.1 JComboBoxModel</p>            <p>&nbsp;</p>            <p> 18.3.2 MutableComboBoxModel</p>            <p>&nbsp;</p>            <p> 18.3.3 DefaultComboBoxModel</p>            <p>&nbsp;</p>            <p> 18.4 组合框单绘制器</p>            <p>&nbsp;</p>            <p align="center"><b>例18-2 一个定制的列表单元绘制器</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;<br>            import javax.swing.border.*;            <p>public class Test extends JApplet {<br>              public void init() {<br>              Container contentPane = getContentPane();<br>              JComboBox combo = new JComboBox(new Object[] {<br>              new Object[] { Color.gray, &quot;gray&quot; },<br>              new Object[] { Color.orange, &quot;orange&quot; },<br>              new Object[] { Color.red, &quot;red&quot; },<br>              new Object[] { Color.blue, &quot;blue&quot; },<br>              new Object[] { Color.yellow, &quot;yellow&quot; },<br>              new Object[] { Color.magenta, &quot;magenta&quot; },<br>              new Object[] { Color.black, &quot;black&quot; },<br>              new Object[] { Color.green, &quot;green&quot; },<br>              new Object[] { Color.lightGray, &quot;lightGray&quot;} });</p>            <p> combo.setRenderer(new ColorRenderer());</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(combo);<br>              }<br>              }<br>              class ColorRenderer extends JLabel implements ListCellRenderer {<br>              private static ColorIcon icon = new ColorIcon();</p>            <p> private Border <br>              redBorder = BorderFactory.createLineBorder(Color.red,2),<br>              emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);</p>            <p> public Component getListCellRendererComponent(<br>              JList list,<br>              Object value,<br>              int index,<br>              boolean isSelected,<br>              boolean cellHasFocus) {<br>              Object[] array = (Object[])value;</p>            <p> icon.setColor((Color)array[0]);<br>              setIcon(icon);<br>              setText((String)array[1]);</p>            <p> if(isSelected) setBorder(redBorder);<br>              else setBorder(emptyBorder);</p>            <p> return this;<br>              }<br>              }<br>              class ColorIcon implements Icon {<br>              private Color color;<br>              private int w, h;</p>            <p> public ColorIcon() {<br>              this(Color.gray, 50, 15);<br>              }<br>              public ColorIcon(Color color, int w, int h) {<br>              this.color = color;<br>              this.w = w;<br>              this.h = h;<br>              }<br>              public void paintIcon(Component c, Graphics g, int x, int y) {<br>              g.setColor(Color.black);<br>              g.drawRect(x, y, w-1, h-1);<br>              g.setColor(color);<br>              g.fillRect(x+1, y+1, w-2, h-2);<br>              }<br>              public Color getColor() {<br>              return color;<br>              }<br>              public void setColor(Color color) {<br>              this.color = color;<br>              }<br>              public int getIconWidth() {<br>              return w;<br>              }<br>              public int getIconHeight() {<br>              return h;<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 18.5 组合框键选取管理器</p>            <p>&nbsp;</p>            <p> 18.5.1 使用缺省键选取管理</p>            <p>&nbsp;</p>            <p align="center"><b>例18-3 使用缺省的键选取管理器</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;<br>            import javax.swing.border.*;            <p>public class Test extends JApplet {<br>              private JComboBox colorCombo = new JComboBox(new Object[] {<br>              new Item(new Object[] { Color.gray, &quot;gray&quot; }),<br>              new Item(new Object[] { Color.orange, &quot;orange&quot; }),<br>              new Item(new Object[] { Color.red, &quot;red&quot; }),<br>              new Item(new Object[] { Color.blue, &quot;blue&quot; }),<br>              new Item(new Object[] { Color.yellow, &quot;yellow&quot; }),<br>              new Item(new Object[] { Color.magenta, &quot;magenta&quot; }),<br>              new Item(new Object[] { Color.black, &quot;black&quot; }),<br>              new Item(new Object[] { Color.green, &quot;green&quot; }),<br>              new Item(new Object[] { Color.lightGray, &quot;lightGray&quot;})<br>              });</p>            <p> public void init() {<br>              final Container contentPane = getContentPane();</p>            <p> colorCombo.setRenderer(new ColorRenderer());</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(colorCombo);</p>            <p> colorCombo.addActionListener(new ActionListener(){<br>              public void actionPerformed(ActionEvent e) {<br>              Item item = (Item)colorCombo.getSelectedItem();<br>              String first = item.toString().substring(0,1);</p>            <p> showStatus(&quot;'&quot; + first + &quot;'&quot; + &quot; is for               &quot; + item);<br>              }<br>              });<br>              }<br>              }<br>              class Item {<br>              private Color color;<br>              private String string;</p>            <p> public Item(Object[] array) {<br>              color = (Color)array[0];<br>              string = (String)array[1];<br>              }<br>              public Color getColor() { return color; }<br>              public String toString() { return string; }<br>              }<br>              class ColorRenderer extends JLabel implements ListCellRenderer {<br>              private static ColorIcon icon = new ColorIcon();</p>            <p> private Border <br>              redBorder = BorderFactory.createLineBorder(Color.red,2),<br>              emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);</p>            <p> public Component getListCellRendererComponent(<br>              JList list,<br>              Object value,<br>              int index,<br>              boolean isSelected,<br>              boolean cellHasFocus) {<br>              Item item = (Item)value;</p>            <p> icon.setColor(item.getColor());</p>            <p> setIcon(icon);<br>              setText(item.toString());</p>            <p> if(isSelected) setBorder(redBorder);<br>              else setBorder(emptyBorder);</p>            <p> return this;<br>              }<br>              }<br>              class ColorIcon implements Icon {<br>              private Color color;<br>              private int w, h;</p>            <p> public ColorIcon() {<br>              this(Color.gray, 50, 15);<br>              }<br>              public ColorIcon(Color color, int w, int h) {<br>              this.color = color;<br>              this.w = w;<br>              this.h = h;<br>              }<br>              public void paintIcon(Component c, Graphics g, int x, int y) {<br>              g.setColor(Color.black);<br>              g.drawRect(x, y, w-1, h-1);<br>              g.setColor(color);<br>              g.fillRect(x+1, y+1, w-2, h-2);<br>              }<br>              public Color getColor() {<br>              return color;<br>              }<br>              public void setColor(Color color) {<br>              this.color = color;<br>              }<br>              public int getIconWidth() {<br>              return w;<br>              }<br>              public int getIconHeight() {<br>              return h;<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 18.5.2 定制键选取管理器</p>            <p>&nbsp;</p>            <p align="center"><b>例18-4 实现一个定制的键选取管理器</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;<br>            import javax.swing.border.*;            <p>public class Test extends JApplet {<br>

⌨️ 快捷键说明

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