技术开发 频道

AWT摘要

  【IT168 技术文章】为演示新的 AWT 功能,我们将创建一个程序将屏幕设为全屏(最小化桌面装饰如工具栏)并使用新的颜色常量设置背景。您将能够通过旋转鼠标滚轮或使用左和右 shift 键更改背景色。

  清单 1 提供了该程序的基本骨架程序。遗憾的是,在要使用的鼠标滚轮支持功能中仍存在错误(有关详细信息请参阅 参考资料)。为使这种功能起作用,您需要把 JButton 添加到 JScrollPane ,再把 JScrollPane 添加到框架中。这个错误使得这个骨架程序比必需的复杂了一点。

  清单 1. 创建可关闭框架的骨架程序

1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 public class AwtTest {
5   // See bug 4475240
6   static JButton button = new JButton();
7   static JScrollPane pane = new JScrollPane(button);
8   public static void main(String args[]) {
9     JFrame frame = new JFrame("AwtTest");
10     // See bug 4475240
11     frame.getContentPane().add(button, BorderLayout.CENTER);
12     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13     frame.show();
14   }
15 }
16

  工具箱 insets

  在上一个专栏中,我提到了 用 setExtendedState() 最大化 Frame 的功能。如果您将框架的状态设置为 Frame.MAXIMIZED_BOTH ,您的框架就被完全最大化了。但如果您不希望把框架最大化,却希望它的大小填满用户的桌面区域(扣除所有桌面装饰的大小),那么现在您可以查询那些装饰使用的 Insets (请参阅清单 2)。这些信息由 Toolkit 的 getScreenInsets() 方法提供。如果从屏幕大小中减去那些 insets,您就得到了窗口的应有大小。为正确地定位,您还需要使用顶端和左边的 insets。

  清单 2. 确定屏幕大小

1 private static void sizeScreen(JFrame frame) {
2     Toolkit kit = Toolkit.getDefaultToolkit();
3     Dimension screenSize = kit.getScreenSize();
4     GraphicsConfiguration config = frame.getGraphicsConfiguration();
5     Insets insets = kit.getScreenInsets(config);
6     screenSize.width -= (insets.left + insets.right);
7     screenSize.height -= (insets.top + insets.bottom);
8     frame.setSize(screenSize);
9     frame.setLocation(insets.left, insets.top);
10   }
11

         只需把 sizeScreen() 调用添加到 main() 方法中。

       

   

0
相关文章