📄 s15.htm
字号:
true, // resizble<br> true, // closable<br> true, // maximizable<br> true); // iconifiable</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> contentPane.add(desktopPane, BorderLayout.CENTER);</p> <p> jif.setBounds(50, 50, 300, 200);<br> jif.setFrameIcon(new ImageIcon(this.getClass().getResource("print.gif")));<br> desktopPane.add(jif);<br> jif.show();//源添加的一句,原文没有<br> }<br> }</p> <hr size="1" noshade> <p> </p> <p> </p> <p> 15.1.3 AWT兼容</p> <p> </p> <p align="center"><b>例15-5 一个定制的桌面窗格</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> CustomDesktopPane desktopPane = new CustomDesktopPane();<br> int frameCount = 1, numFrames = 5, x, y;</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> setJMenuBar(createMenuBar());<br> contentPane.add(desktopPane, BorderLayout.CENTER);</p> <p> for(int i=0; i < numFrames; ++i) {<br> JInternalFrame jif = new JInternalFrame(<br> "Internal Frame " + frameCount++, // title<br> true, // resizable<br> true, // closable<br> true, // maximizable<br> true); // iconifiable</p> <p> x = (int)(Math.random() * 100);<br> y = (int)(Math.random() * 100);</p> <p> jif.setBounds(x, y, 250, 100);<br> desktopPane.putClientProperty(<br> "JDesktopPane.dragMode",<br> "outline");</p> <p> desktopPane.add(jif);<br> jif.show();//新添加一句,原文没有<br> }<br> }<br> private JMenuBar createMenuBar() {<br> JMenuBar menubar = new JMenuBar();<br> JMenu windowMenu = new JMenu("Window");</p> <p> windowMenu.add(new OpenAllAction());<br> windowMenu.add(new CloseAllAction());<br> windowMenu.add(new CascadeAction());</p> <p> menubar.add(windowMenu);<br> return menubar;<br> }<br> class OpenAllAction extends AbstractAction {<br> public OpenAllAction() {<br> super("open all");<br> }<br> public void actionPerformed(ActionEvent e) {<br> desktopPane.openAll();<br> }<br> }<br> class CloseAllAction extends AbstractAction {<br> public CloseAllAction() {<br> super("close all");<br> }<br> public void actionPerformed(ActionEvent e) {<br> desktopPane.closeAll();<br> }<br> }<br> class CascadeAction extends AbstractAction {<br> public CascadeAction() {<br> super("cascade");<br> }<br> public void actionPerformed(ActionEvent e) {<br> desktopPane.cascade();<br> }<br> }<br> }<br> class CustomDesktopPane extends JDesktopPane { <br> private int xoffset = 20, yoffset = 20, w = 250, h = 350;</p> <p> public void closeAll() {<br> JInternalFrame[] frames = getAllFrames();</p> <p> for(int i=0; i < frames.length; ++i) {<br> if(!frames[i].isIcon()) {<br> try {<br> frames[i].setIcon(true);<br> }<br> catch(java.beans.PropertyVetoException ex) {<br> System.out.println("iconification vetoed!");<br> }<br> }<br> }<br> }<br> public void openAll() {<br> JInternalFrame[] frames = getAllFrames();</p> <p> for(int i=0; i < frames.length; ++i) {<br> if(frames[i].isIcon()) {<br> try {<br> frames[i].setIcon(false);<br> }<br> catch(java.beans.PropertyVetoException ex) {<br> System.out.println("restoration vetoed!");<br> }<br> }<br> }<br> }<br> public void cascade() {<br> JInternalFrame[] frames = getAllFrames();<br> int x = 0, y = 0;</p> <p> for(int i=0; i < frames.length; ++i) {<br> if( ! frames[i].isIcon()) {<br> frames[i].setBounds(x,y,w,h);<br> x += xoffset;<br> y += yoffset;<br> }<br> }<br> }<br> }</p> <hr size="1" noshade> <p> 15.2 JDesktopPane</p> <p> </p> <p><br> 15.2.1 JDesktopPane属性</p> <p> </p> <p>15.2.2 JDesktopPane事件</p> <p> </p> <p> 15.2.3 JDesktopPane类总结 </p> <p> </p> <p> 15.2.4 AWT兼容</p> <p> </p> <p> 15.3 DesktopManager</p> <p> </p> <p align="center"><b>例15-6 一个定制的DesktopManager</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> JDesktopPane desktopPane = new JDesktopPane();</p> <p> public void init() {<br> Container contentPane = getContentPane();</p> <p> contentPane.add(desktopPane, BorderLayout.CENTER);<br> desktopPane.setDesktopManager(new OutlineManager());</p> <p> JInternalFrame jif = new JInternalFrame(<br> "Outline Drag and Resize", // title<br> true, // resizable<br> true, // closable<br> true, // maximizable<br> true); // iconifiable</p> <p> jif.setBounds(10, 10, 250, 100);<br> desktopPane.add(jif);<br> jif.show();//新添加的,原文没有<br> }<br> }<br> class OutlineManager extends DefaultDesktopManager { <br> private Rectangle start, last;<br> private boolean first = true;</p> <p> // dragging ...</p> <p> public void beginDraggingFrame(JComponent frame) {<br> initializeOutline(frame);<br> }<br> public void dragFrame(JComponent frame, int x, int y) {<br> updateOutline(frame, x, y, start.width, start.height);<br> }<br> public void endDraggingFrame(JComponent frame) {<br> endOutline(frame);<br> }</p> <p> // resizing ...</p> <p> public void beginResizingFrame(JComponent frame, int dir) {<br> initializeOutline(frame);<br> }<br> public void resizeFrame(JComponent frame, <br> int x, int y, int w, int h) {<br> updateOutline(frame, x, y, w, h);<br> }<br> public void endResizingFrame(JComponent frame) {<br> endOutline(frame);<br> }</p> <p> // outline ...</p> <p> private void initializeOutline(final JComponent frame) {<br> // the call to setVisible() calls repaint, which<br> // places a paint event on the event queue.<br> // therefore, the effect of the setVisible() call is<br> // not apparent until after this method returns</p> <p> frame.setVisible(false);<br> start = frame.getBounds();<br> last = new Rectangle(start);<br> first = true;</p> <p> // the Runnable below paints the initial outline <br> // after the repaint event spawned by setVisible() is<br> // handled</p> <p> SwingUtilities.invokeLater(new Runnable() {<br> public void run() {<br> updateOutline(frame,start.x,start.y,<br> start.width,start.height);<br> }<br> });<br> }<br> private void updateOutline(JComponent frame, <br> int x, int y, int w, int h) {<br> Container container = frame.getParent();<br> Graphics g = container.getGraphics();</p> <p> try {<br> g.setXORMode(container.getBackground());</p> <p> if( ! first) {<br> g.drawRect(last.x, last.y, <br> last.width-1, last.height-1);<br> }<br> g.drawRect(x, y, w-1, h-1);<br> first = false;<br> }<br> finally {<br> g.dispose();<br> last.setBounds(x,y,w,h);<br> }<br> }<br> private void endOutline(JComponent frame) {<br> frame.setVisible(true);<br> setBoundsForFrame(<br> frame, last.x, last.y, last.width, last.height);<br> }<br> }</p> <hr size="1" noshade> <p> 15.4 本章回顾</p> <p> </p> <p>[<a href="index.html" target="_self">目录</a>][<a href="s14.htm">上一页</a>][<a href="s16.htm">下一页</a>](飒龙收藏/2002.5.18) </p> <p> </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 + -