📄 s13.htm
字号:
JLabel view1 = new JLabel(<br> new ImageIcon("gjMedium.gif"));<br> JLabel view2 = new JLabel(<br> new ImageIcon("anjinAndMariko.gif"));</p> <p> JScrollPane sp1 = new JScrollPane(view1);<br> JScrollPane sp2 = new JScrollPane(view2);</p> <p> setContentPane(contentPane);<br> sp1.setPreferredSize(new Dimension(250,250));<br> sp2.setPreferredSize(new Dimension(250,250));</p> <p> contentPane.add(sp1);<br> contentPane.add(sp2);<br> }<br> }<br> class CustomContentPane extends JPanel { <br> private ImageIcon rain = new ImageIcon("rain.gif");</p> <p> public CustomContentPane() {<br> setLayout(new FlowLayout());<br> } <br> public void paintComponent(Graphics g) {<br> int rainw = rain.getIconWidth();<br> int rainh = rain.getIconHeight();</p> <p> Dimension size = getSize();</p> <p> for(int row=0; row < size.height; row += rainh)<br> for(int col=0; col < size.width; col += rainw)<br> rain.paintIcon(this,g,col,row);<br> }<br> }</p> <hr size="1" noshade> <p> 13.2.6 AWT兼容</p> <p> </p> <p> 13.3 Scrollable接口</p> <p> </p> <p align="center"><b>例13-10 跟踪视口宽度</b></p> <hr noshade size="1"> import java.io.*;<br> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.text.*; <p>public class Test extends JApplet {<br> private JTextArea textArea = new JTextArea();</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> readFile();</p> <p> contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br> contentPane.add(new JScrollPane(textArea), <br> BorderLayout.CENTER);<br> }<br> private void readFile() {<br> DefaultEditorKit kit = new DefaultEditorKit();</p> <p> try {<br> kit.read(new FileReader("Test.java"),<br> textArea.getDocument(), 0);<br> }<br> catch(Exception ex) { ex.printStackTrace(); }<br> }<br> class ControlPanel extends JPanel { <br> public ControlPanel() {<br> final JCheckBox cb = new JCheckBox("wrap");</p> <p> add(cb);</p> <p> cb.addItemListener(new ItemListener() {<br> public void itemStateChanged(ItemEvent e) {<br> if(cb.isSelected())<br> textArea.setLineWrap(true);<br> else<br> textArea.setLineWrap(false);<br> }<br> });<br> }<br> }<br> }</p> <hr size="1" noshade> <p> 13.4 JScrollBar</p> <p> </p> <p> </p> <p> 13.4.1 使用Swing的JScrollBar类进行手动滚动</p> <p> </p> <p> 13.4.2 块增量和单元增量</p> <p> </p> <p> 13.4.3 JScrollBar属性</p> <p> </p> <p align="center"><b>例13-11 为JScrollBar的实例指定单增量和块增量</b></p> <hr noshade size="1"> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.event.*; <p>public class Test extends JApplet {<br> private JScrollBar vsb = new JScrollBar(JScrollBar.VERTICAL);<br> private SSPanel panel = new SSPanel();</p> <p> public Test() {<br> Container contentPane = getContentPane();</p> <p> contentPane.add(panel, BorderLayout.CENTER);<br> contentPane.add(vsb, BorderLayout.EAST);</p> <p> vsb.addAdjustmentListener(new AdjustmentListener() {<br> public void adjustmentValueChanged(<br> AdjustmentEvent e) {<br> JScrollBar sb = (JScrollBar)e.getSource();<br> showScrollBarValues();<br> panel.setTopIndexByPixelValue(e.getValue());<br> panel.repaint();<br> }<br> });<br> }<br> public void paint(Graphics g) {<br> Dimension pref = panel.getPreferredSize();<br> Dimension size = panel.getSize();<br> int extent = size.height, max = pref.height;<br> int value = Math.max(0, <br> Math.min(vsb.getValue(), max - extent));</p> <p> vsb.setVisible(extent < max);<br> vsb.setUnitIncrement(panel.getUnitHeight());<br> vsb.setBlockIncrement(extent - vsb.getUnitIncrement());<br> vsb.setValues(value, extent, 0, max);</p> <p> showScrollBarValues();<br> super.paint(g);<br> }<br> private void showScrollBarValues() {<br> showStatus("min: " + vsb.getMinimum() +<br> ", max: " + vsb.getMaximum() +<br> ", visible amount: " + <br> vsb.getVisibleAmount() +<br> ", value: " + vsb.getValue());<br> }<br> }<br> class SSPanel extends JPanel { <br> private int topIndex = 0;<br> private int fh;</p> <p> private String[] data = {<br> "Brown, Ted: 000-00-0001", "Brown, Ted: 000-00-0002",<br> "Brown, Ted: 000-00-0003", "Brown, Ted: 000-00-0004",<br> "Brown, Ted: 000-00-0005", "Brown, Ted: 000-00-0006",<br> "Brown, Ted: 000-00-0007", "Brown, Ted: 000-00-0008",<br> "Brown, Ted: 000-00-0009", "Brown, Ted: 000-00-00010",<br> "Brown, Ted: 000-00-00011", "Brown, Ted: 000-00-00012",<br> "Brown, Ted: 000-00-00013", "Brown, Ted: 000-00-00014",<br> "Brown, Ted: 000-00-00015", "Brown, Ted: 000-00-00016",<br> "Brown, Ted: 000-00-00017", "Brown, Ted: 000-00-00018",<br> "Brown, Ted: 000-00-00019", "Brown, Ted: 000-00-00020",<br> "Brown, Ted: 000-00-00021", "Brown, Ted: 000-00-00022",<br> "Brown, Ted: 000-00-00023", "Brown, Ted: 000-00-00024",<br> "Brown, Ted: 000-00-00025", "Brown, Ted: 000-00-00026",<br> "Brown, Ted: 000-00-00027", "Brown, Ted: 000-00-00028",<br> "Brown, Ted: 000-00-00029", "Brown, Ted: 000-00-00030",<br> };<br> public void paintComponent(Graphics g) {<br> Color color = g.getColor();<br> super.paintComponent(g);<br> g.setColor(color);</p> <p> Dimension size = getSize();<br> Insets insets = getInsets();<br> int y = insets.top;</p> <p> for(int i = topIndex; i < data.length; ++i, y += fh) {<br> g.drawString(data[i], 0, y);</p> <p> if(y + fh > size.height - insets.bottom)<br> break;<br> }<br> }<br> public void setTopIndexByPixelValue(int pixelValue) {<br> topIndex = pixelValue / fh;<br> }<br> public int getUnitHeight() {<br> return fh;<br> }<br> public Dimension getPreferredSize() {<br> Dimension dim = new Dimension();<br> Graphics g = getGraphics();</p> <p> try {<br> FontMetrics fm = g.getFontMetrics();<br> fh = fm.getHeight();</p> <p> dim.width = fm.stringWidth(data[data.length-1]);<br> dim.height = fm.getHeight() * (data.length + 1);<br> }<br> finally {<br> g.dispose();<br> }<br> return dim;<br> }<br> }</p> <hr size="1" noshade> <p> 13.4.4 JScrollBar事件</p> <p> </p> <p align="center"><b>例13-12 使用JScrollBar的valueIsAdjusting属性</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> public Test() {<br> Container contentPane = getContentPane();<br> JScrollBar sb = new JScrollBar();</p> <p> contentPane.add(sb, BorderLayout.EAST);</p> <p> sb.addAdjustmentListener(new AdjustmentListener() {<br> public void adjustmentValueChanged(<br> AdjustmentEvent e) {<br> JScrollBar jsb = (JScrollBar)e.getAdjustable();</p> <p> if(jsb.getValueIsAdjusting())<br> showStatus("adjusting ...");<br> else<br> showStatus(Integer.toString(e.getValue()));<br> }<br> });<br> }<br> }</p> <hr size="1" noshade> <p> 13.4.5 JScrollBar类总结</p> <p> </p> <p> 13.4.6 AWT兼容</p> <p> </p> <p> 13.5 本章回顾</p> <p> </p> <p>[<a href="index.html" target="_self">目录</a>][<a href="s12.htm">上一页</a>][<a href="s14.htm">下一页</a>](飒龙收藏/2002.5.18) </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 + -