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

📄 s12.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="s11.htm">上一页</a>][<a href="s13.htm">下一页</a>]</p>            <p align="center"><b>第12章 轻量容器</b></p>            <p>  本章讨论如下Swing轻量容器:<br>                ·JPanel<br>                ·JRootPane<br>                ·JLayeredPane<br>                ·JTabbedPane<br>                ·JSplitPane<br>                JPanel是AWT的Canvas和Panel类的继承类。文本和图形都可以绘制到JPanel实例中,并且JPanel实例可以用作一个通用容器。<br>                JRootPane是一个包含在窗体、对话框、窗口、内部窗体和Swing小应用程序等Swing顶层容器中的容器。<br>                JLayeredPane允许把它所包含的组件放置在不同的层中。层控制显示组件的深度。<br>                JTabbedPane是一个能够包含多个组件的容器。JTabbedPane包含的多个组件一次只能显示一个。JTabbedPane的实例包含能够用于选取当前显示的组件的选项卡。<br>                JSplitPane包含两个组件,这两个组件由一个分隔体所分隔。可以拖动分隔体以改变每个组件所占据的空间大小。</p>            <p> <b>12.1 JPanel</b></p>            <p>  JPanel是最简单的Swing组件之一;但它也是使用最多的组件之一。Swing在很多其他组件中使用了JPanel实例;例如,缺省时,JRootPane容器为它的内容窗格和玻璃窗格创建了JPanel实例,正如表12-1所反映的那样。<br>                JPanel类具有简单容器显示图形的画布的双重功能。图12-1示出的小应用程序创建了三个JPanel实例:一个包含“Name:”选项卡和文本域的控制面板、一个专门用作显示文本和图形的画布的窗格,以及包含上述控制面板和画面的第三个面板。<br>                例12-1中列出了图12-1中示出的小应用程序的代码。</p>            <p align="center"> <b>例12-1 一个使用了三个JPanel实例的小应用程序</b></p>            <hr noshade size="1"><pre>import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JApplet {	public Test() {		Container contentPane = getContentPane();		JPanel panel = new JPanel(new BorderLayout());		JPanel controlPanel = new JPanel();		JPanel canvas = new Canvas();		canvas.setBorder(			BorderFactory.createLineBorder(Color.black));		controlPanel.add(new JLabel("Name:"));		controlPanel.add(new JTextField(20));		panel.add(controlPanel, BorderLayout.NORTH);		panel.add(canvas, BorderLayout.CENTER);		contentPane.add(panel);	}}class Canvas extends JPanel {	public void paintComponent(Graphics g) {		super.paintComponent(g);		Dimension size = getSize();		g.setColor(Color.black);		g.drawLine(50,50,size.width,size.height);		g.drawArc(20,40,25,25,0,290);		g.drawString("A JPanel Used as a Canvas", 20, 20);	}}</pre>            <hr size="1" noshade>            <p></p>            <p></p>            <p> <b>12.1.1 JPanel的属性</b></p>            <p>&nbsp;</p>            <p> 12.1.2 JPanel的事件</p>            <p>&nbsp;</p>            <p> 12.1.3 JPanel类总结</p>            <p>&nbsp;</p>            <p> 12.1.4 AWT兼容</p>            <p>&nbsp;</p>            <p> 12.2 JRootPane</p>            <p>&nbsp;</p>            <p> 12.2.1 RootPaneContainer接口</p>            <p>&nbsp;</p>            <p> 12.2.2 玻璃空格</p>            <p align="center"><b>例12-2 玻璃窗格测试小应用程序</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 Component glassPane = new CustomGlassPane();</p>            <p> public void init() {<br>              JRadioButton rb = new JRadioButton();<br>              JButton button = new JButton(&quot;show glass pane&quot;);<br>              Container contentPane = getContentPane();</p>            <p> contentPane.setLayout(new FlowLayout());<br>              contentPane.add(button);</p>            <p> rb.setIcon(new ImageIcon(&quot;duke_standing.gif&quot;));<br>              rb.setRolloverIcon(new ImageIcon(&quot;duke_waving.gif&quot;));</p>            <p> setGlassPane(glassPane);<br>              contentPane.add(rb);</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              glassPane.setVisible(true);<br>              }<br>              });<br>              }<br>              }<br>              class CustomGlassPane extends JPanel {<br>              private JButton button;<br>              private String displayString = &quot;glass pane ... &quot;;</p>            <p> public CustomGlassPane() {<br>              addMouseListener(new MouseAdapter() {<br>              public void mousePressed(MouseEvent e) {<br>              setVisible(false);<br>              }<br>              });<br>              }<br>              public void paintComponent(Graphics g) {<br>              Dimension size = getSize();<br>              FontMetrics fm = g.getFontMetrics();<br>              int sw = fm.stringWidth(displayString);<br>              int fh = fm.getHeight();</p>            <p> g.setColor(Color.blue);</p>            <p> for(int row=fh; row &lt; size.height; row += fh)<br>              for(int col=0; col &lt; size.width; col += sw)<br>              g.drawString(displayString, col, row);<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 12.2.3 内容窗格</p>            <p>&nbsp;</p>            <p align="center"><b>例12-3 一个定制的内容窗格</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;            <p>public class ContentPaneTest extends JApplet {<br>              private JButton button = new JButton(&quot;show glass pane&quot;);</p>            <p> public void init() {<br>              setGlassPane(new CustomGlassPane(button));<br>              setContentPane(new CustomContentPane(button));</p>            <p> button.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              getGlassPane().setVisible(true);<br>              }<br>              });<br>              }<br>              }<br>              class CustomContentPane extends JPanel {<br>              private ImageIcon rain = new ImageIcon(&quot;rain.gif&quot;);<br>              private ImageIcon punch = new ImageIcon(&quot;punch.gif&quot;);<br>              private int rainw = rain.getIconWidth();<br>              private int rainh = rain.getIconHeight();</p>            <p> public CustomContentPane(JButton button) {<br>              add(button);<br>              add(new JLabel(&quot;I'm a JLabel in the Content Pane&quot;,<br>              punch, SwingConstants.RIGHT));<br>              }<br>              public void paintComponent(Graphics g) {<br>              Dimension size = getSize();</p>            <p> for(int row=0; row &lt; size.height; row += rainh)<br>              for(int col=0; col &lt; size.width; col += rainw)<br>              rain.paintIcon(this,g,col,row);<br>              }<br>              }<br>              class CustomGlassPane extends JPanel {<br>              private JButton button;<br>              private Point ulhc = new Point(20,20), last;<br>              private String displayString = <br>              &quot;I'm on the glass pane - drag me around!&quot;;</p>            <p> public CustomGlassPane(JButton b) {<br>              button = b;</p>            <p> setOpaque(false); <br>              addMouseListener(new MouseAdapter() {<br>              public void mousePressed(MouseEvent e) {<br>              last = e.getPoint();<br>              }<br>              public void mouseReleased(MouseEvent e) {<br>              setVisible(false);<br>              }<br>              });<br>              addMouseMotionListener(new MouseMotionAdapter() {<br>              public void mouseDragged(MouseEvent e) {<br>              Point drag = e.getPoint();<br>              ulhc.x += drag.x - last.x;<br>              ulhc.y += drag.y - last.y;</p>            <p> repaint();</p>            <p> last.x = drag.x;<br>              last.y = drag.y;<br>              }<br>              });<br>              }<br>              public void paintComponent(Graphics g) {<br>              FontMetrics fm = g.getFontMetrics();<br>              int sw = fm.stringWidth(displayString);<br>              int sh = fm.getHeight();<br>              int ascent = fm.getAscent();</p>            <p> g.drawRect(ulhc.x, ulhc.y, sw + 10, sh + 10);<br>              g.drawString(displayString, <br>              ulhc.x + 5, ulhc.y + ascent + 5);<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 12.2.4 JRootPane属性</p>            <p>&nbsp;</p>            <p> 12.2.5 JRootPane事件</p>            <p>&nbsp;</p>            <p align="center"><b>例12-4 一个传递事件的玻璃窗格</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.*;<br>            import javax.swing.*;<br>            import javax.swing.text.*;            <p>public class Test extends JApplet {<br>              Component glassPane = new AnnotationPane();<br>              JCheckBox annotations = new JCheckBox(&quot;annotations&quot;);</p>            <p> public void init() {<br>              createContainerHierarchy();<br>              setupGlassPane();<br>              }<br>              private void createContainerHierarchy() {<br>              Container contentPane = getContentPane();</p>            <p> JPanel controlPanel = new JPanel();<br>              JTextArea textArea = new JTextArea();<br>              JScrollPane scrollPane = new JScrollPane(textArea);</p>            <p> readFile(textArea.getDocument());</p>            <p> controlPanel.add(annotations);</p>            <p> contentPane.add(scrollPane, &quot;Center&quot;); // scroll pane<br>              contentPane.add(controlPanel, &quot;South&quot;); // panel</p>            <p> textArea.addMouseListener(new MouseAdapter() {<br>              public void mouseEntered(MouseEvent e) {<br>              System.out.println(&quot;enter&quot;);<br>              }<br>              });<br>              }<br>              private void setupGlassPane() {<br>              setGlassPane(glassPane);<br>              <br>              annotations.addItemListener(new ItemListener() {<br>              public void itemStateChanged(ItemEvent e) {<br>              if(e.getStateChange() == ItemEvent.SELECTED)<br>              glassPane.setVisible(true);<br>              else<br>              glassPane.setVisible(false);<br>              }<br>              });<br>              }<br>              private void readFile(Document doc) {<br>              try {<br>              Reader in = new FileReader(&quot;Test.java&quot;);<br>              char[] buff = new char[4096];<br>              int next;</p>            <p> while ((next = in.read(buff, 0, buff.length)) != -1)<br>              doc.insertString(<br>              doc.getLength(), new String(buff, 0, next), null);<br>              }<br>              catch(Exception e) {<br>              System.out.println(&quot;interruption&quot;);<br>              }<br>              }<br>              }<br>              class AnnotationPane extends JPanel {<br>              private Icon annotations[] = {<br>              new ImageIcon(&quot;annotation.gif&quot;),<br>              new ImageIcon(&quot;annotation_1.gif&quot;),<br>              new ImageIcon(&quot;annotation_2.gif&quot;)<br>              };<br>              public void paintComponent(Graphics g) {<br>              annotations[0].paintIcon(this, g, 400, 50);<br>              annotations[1].paintIcon(this, g, 10, 150);<br>              annotations[2].paintIcon(this, g, 10, 265);<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 12.2.6 JRootPane类总结</p>            <p>&nbsp;</p>            <p> 12.2.7 AWT兼容</p>            <p>&nbsp;</p>            <p> 12.3 JLayoutPane</p>

⌨️ 快捷键说明

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