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

📄 s18.htm

📁 提供给JAVA编程者图形界面卷
💻 HTM
📖 第 1 页 / 共 3 页
字号:
              private ColorKeySelectionManager ksm = <br>              new ColorKeySelectionManager();</p>            <p> 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>              });<br>              public void init() {<br>              final Container contentPane = getContentPane();</p>            <p> colorCombo.setRenderer(new ColorRenderer());<br>              colorCombo.setKeySelectionManager(ksm);</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 itemString = item.toString();</p>            <p> showStatus(&quot;'&quot; + ksm.getSearchString() +<br>              &quot;'&quot; + &quot; is for &quot; + itemString);<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());<br>              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>              }<br>              class ColorKeySelectionManager <br>              implements JComboBox.KeySelectionManager {<br>              private String searchString = new String();<br>              private long lastTime;</p>            <p> public int selectionForKey(char key,ComboBoxModel model) {<br>              updateSearchString(model, key);</p>            <p> int start = getIndexAfter(model,getSelectedString(model));<br>              int selection = search(model, start);</p>            <p> if(selection == -1 &amp;&amp; start != 0)<br>              selection = search(model, 0);</p>            <p> return selection;<br>              }<br>              public String getSearchString() {<br>              return searchString;<br>              }<br>              private int search(ComboBoxModel model, int start) {<br>              for(int i=start; i &lt; model.getSize(); ++i) {<br>              String s = getString(model, i);<br>              int searchLength = searchString.length();</p>            <p> if(s.regionMatches(0,searchString,0,searchLength))<br>              return i;<br>              }<br>              return -1;<br>              }<br>              private int getIndexAfter(ComboBoxModel model, String find) {<br>              int size = model.getSize();</p>            <p> if(find != null) {<br>              for(int i=0; i &lt; size; ++i) {<br>              String s = getString(model, i);</p>            <p> if(s.compareToIgnoreCase(find) == 0) {<br>              return (i == size-1) ? 0 : i + 1;<br>              }<br>              }<br>              }<br>              return 0;<br>              }<br>              private String getString(ComboBoxModel model, int index) {<br>              Item item = (Item)model.getElementAt(index);<br>              return item.toString();<br>              }<br>              private String getSelectedString(ComboBoxModel model) {<br>              Item item = (Item)model.getSelectedItem();<br>              return item.toString();<br>              }<br>              private void updateSearchString(<br>              ComboBoxModel model, char key) {<br>              long time = System.currentTimeMillis();</p>            <p> if(time - lastTime &lt; 500) searchString += key;<br>              else searchString = &quot;&quot; + key;</p>            <p> lastTime = time;<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 18.5.3 程序式的键选取</p>            <p>&nbsp;</p>            <p align="center"><b>例18-5 使用SwingUtilities.invokeLater()</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 charsCombo = new JComboBox(new Object[] {<br>              new Character('g'), new Character('o'), <br>              new Character('r'), new Character('b'), <br>              new Character('y'), new Character('m'), <br>              new Character('g'), new Character('l'),<br>              });<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> colorCombo.addActionListener(new ActionListener(){<br>              public void actionPerformed(ActionEvent e) {<br>              Item item = (Item)colorCombo.getSelectedItem();<br>              Character first = new Character(<br>              item.toString().charAt(0));</p>            <p> showStatus(&quot;'&quot; + first.toString() + &quot;'&quot; +<br>              &quot; is for &quot; + item);<br>              }<br>              });<br>              charsCombo.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              final Character c = (Character)<br>              charsCombo.getSelectedItem();</p>            <p> colorCombo.selectWithKeyChar(c.charValue());</p>            <p> SwingUtilities.invokeLater(new Runnable() {<br>              public void run() {<br>              Item item = (Item)<br>              colorCombo.getSelectedItem();</p>            <p> JOptionPane.showMessageDialog(contentPane,<br>              &quot;'&quot; + c.toString() + &quot;'&quot; +<br>              &quot; is for &quot; + item.toString());<br>              }<br>              });<br>              }<br>              });<br>              contentPane.setLayout(<br>              new FlowLayout(FlowLayout.CENTER, 10, 35));</p>            <p> contentPane.add(new JLabel(&quot;Select a Character:&quot;));<br>              contentPane.add(charsCombo);<br>              contentPane.add(colorCombo);<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>              }</p>            <p>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.6 组合框编辑器</p>            <p>&nbsp;</p>            <p align="center"><b>例18-6 实现一个定制的组合框编辑器</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;<br>

⌨️ 快捷键说明

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