📄 s04.htm
字号:
logCheckBox.addItemListener(new ItemListener() {<br> public void itemStateChanged(ItemEvent e) {<br> AbstractButton b = (AbstractButton)e.getSource();</p> <p> if(b.isSelected()) logIsOn = true;<br> else logIsOn = false;<br> }<br> });</p> <p> return controls;<br> }<br> public static void main(String args[]) {<br> final JFrame f = new JFrame();<br> JApplet applet = new DebugGraphicsTest();</p> <p> applet.init();<br> f.setContentPane(applet.getContentPane());</p> <p> f.setBounds(100,100,300,175);<br> f.setTitle("DebugGraphicsTest");<br> f.setVisible(true);</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosing(WindowEvent event) {<br> f.dispose();<br> System.exit(0);<br> }<br> });<br> }<br> }</p> <hr size="1" noshade> <p> 4.6 自动滚动</p> <p> </p> <p align="center"><b>例4-15 包裹在滚动窗格中的一个列表</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*; <p>public class TestApplet extends JApplet {<br> public void init() {<br> String[] items = { "one", "two", "three", <br> "four", "five", "six" };</p> <p> Container contentPane = getContentPane();<br> JList list = new JList(items);</p> <p> list.setVisibleRowCount(3);</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(new JScrollPane(list));<br> }<br> }</p> <hr size="1" noshade> <p align="center"><b>例4-16 自动滚动测试小应用程序</b></p> <hr size="1" noshade> <hr size="1" noshade> <p> </p> <p align="center"><b>例4-17 AutoscrollViewport列表</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>class AutoscrollViewport extends JViewport {<br> Point scrollTo = new Point(), last = new Point();<br> boolean manualDragUnderway = false;<br> final int increment;</p> <p> public AutoscrollViewport(Component component, int inc) {<br> this.increment = inc;</p> <p> setView(component);</p> <p> setAutoscrolls(true);<br> setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));</p> <p> addMouseListener(new MouseAdapter() {<br> public void mousePressed(MouseEvent e) {<br> last.x = e.getPoint().x;<br> last.y = e.getPoint().y;<br> manualDragUnderway = true;<br> }<br> }); <br> addMouseMotionListener(new MouseMotionAdapter() {<br> public void mouseDragged(MouseEvent e) {<br> Point drag = e.getPoint();<br> Point viewPos = getViewPosition();<br> Point offset = new Point(drag.x - last.x,<br> drag.y - last.y);<br> last.x = drag.x;<br> last.y = drag.y;</p> <p> if(contains(drag)) {<br> if(manualDragUnderway) {<br> scrollTo.x = viewPos.x - offset.x;<br> scrollTo.y = viewPos.y - offset.y;<br> setViewPosition(scrollTo);<br> }<br> }<br> else { // autoscrolling ...<br> Rectangle bounds = getBounds();</p> <p> manualDragUnderway = false;</p> <p> if(drag.x > bounds.x + bounds.width) {<br> // scroll right<br> viewPos.x -= increment;<br> setViewPosition(viewPos);<br> }<br> if(drag.x < 0) {<br> // scroll left<br> viewPos.x += increment;<br> setViewPosition(viewPos);<br> }<br> if(drag.y > bounds.y + bounds.height) {<br> // scroll down<br> viewPos.y -= increment;<br> setViewPosition(viewPos);<br> }<br> if(drag.y < 0) {<br> // scroll up<br> viewPos.y += increment;<br> setViewPosition(viewPos);<br> }<br> }<br> }<br> });<br> }<br> }</p> <hr size="1" noshade> <p> 4.7 工具提示</p> <p> </p> <p align="center"><b>例4-18 为一个按钮设置工具提示文本</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class ToolTipTest extends JApplet {<br> public void init() {<br> Container contentPane = getContentPane();<br> JButton button = new JButton("I've got a tooltip");</p> <p> button.setMnemonic(KeyEvent.VK_G);</p> <p> button.setToolTipText(<br> "rather lengthy tooltip text for button");</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(button);<br> }<br> }</p> <hr size="1" noshade> <p> 4.7.1 基于鼠标位置的工具提示</p> <p> </p> <p align="center"><b>例4-19 根据鼠标位置来显示不同的工具提示</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class ToolTipsBasedOnMousePosition extends JApplet {<br> public void init() {<br> Container contentPane = getContentPane();<br> <br> //ImageMap map = new ImageMap("tiger.gif");<br> Icon icon = new ImageIcon(this.getClass().getResource("tiger.gif"));<br> ImageMap map = new ImageMap(icon);<br> <br> contentPane.setLayout(new FlowLayout());<br> contentPane.add(map);<br> }<br> }<br> class ImageMap extends JLabel {<br> private Rectangle teeth= new Rectangle(62,203,80,55),<br> nose = new Rectangle(37,164,130,30),<br> ear = new Rectangle(228,10,65,55),<br> rEye = new Rectangle(137,103,20,17),<br> lEye = new Rectangle(65,97,16,15);</p> <p> //public ImageMap(String imageName) {<br> public ImageMap(Icon imageName) {<br> //super(new ImageIcon(imageName));<br> super(imageName);<br> setToolTipText("tiger!");<br> }<br> public String getToolTipText(MouseEvent e) {<br> Point p = e.getPoint();<br> String s = null;</p> <p> if(teeth.contains(p)) s = "ooooh, big teeth!";<br> else if(nose.contains(p)) s = "keen sense of smell";<br> else if(ear.contains(p)) s = "acute hearing";<br> else if(rEye.contains(p) || lEye.contains(p)) <br> s = "excellent vision";</p> <p> return s == null ? getToolTipText() : s;<br> }<br> }</p> <hr size="1" noshade> <p> 4.7.2 工具提示的首选位置</p> <p> </p> <p> 4.7.3 定制工具提示的行为</p> <p> </p> <p> 4.7.4 定制工具提示的界面样式</p> <p> </p> <p> 4.8 键击处理</p> <p> </p> <p align="center"><b>例4-20 处理嵌套键击</b></p> <hr size="1" noshade> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class KeystrokeTest extends JApplet {<br> private JButton button = new JButton("button");</p> <p> public void init() {<br> Container contentPane = getContentPane();<br> JPanel panel = new JPanel();<br> JCheckBox checkbox = new JCheckBox("checkbox");<br> JButton southButton = new JButton("south button");<br> Listener listener = new Listener();</p> <p> panel.setBorder(<br> BorderFactory.createTitledBorder(<br> ("Ancestor of button and checkbox")));</p> <p> checkbox.registerKeyboardAction(<br> listener,<br> KeyStroke.getKeyStroke(KeyEvent.VK_F,0,false),<br> JComponent.WHEN_FOCUSED);</p> <p> panel.registerKeyboardAction(<br> listener,<br> KeyStroke.getKeyStroke(KeyEvent.VK_A, <br> InputEvent.ALT_MASK, false),<br> JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);</p> <p> southButton.registerKeyboardAction(<br> listener,<br> KeyStroke.getKeyStroke(KeyEvent.VK_W, 0, true),<br> JComponent.WHEN_IN_FOCUSED_WINDOW);</p> <p> panel.add(button);<br> panel.add(checkbox);</p> <p> contentPane.add(panel, "Center");<br> contentPane.add(southButton, "South");<br> }<br> }<br> class Listener implements ActionListener {<br> public void actionPerformed(ActionEvent e) {<br> Object src = e.getSource();<br> String cname = src.getClass().getName();</p> <p> if(src instanceof JCheckBox) {<br> System.out.print("'f' key PRESSED when checkbox");<br> System.out.println(" had focus");<br> }<br> else if(src instanceof JPanel) {<br> System.out.print("'ALT-a' key PRESSED when ancestor");<br> System.out.println(" of titled panel had focus");<br> }<br> else if(src instanceof JButton) {<br> System.out.print("'w' key RELEASED when any");<br> System.out.println(" component in window had focus");<br> }<br> System.out.println("Source: " + cname);<br> System.out.println();<br> }<br> }</p> <hr size="1" noshade> <p> 4.9 客户属性</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -