核心Swing组件(七)

  最后一个基本的Swing组件是JPanel组件。JPanel组件可以作为一个通常目的的窗口对象,替换了AWT的Panel窗口,而当我们需要一个可绘制的Swing组件区域时,JPanel替换了Canvas组件。 JPanel有四个构造函数: public JPanel() JPanel panel = new JPanel(); public JPanel(boolean isDoubleBuffered) JPanel panel = new JPanel(false); public JPanel(LayoutManager manager) JPanel panel = new JPanel(new GridLayout(2,2)); public JPanel(LayoutManager manager, boolean isDoubleBuffered) JPanel panel = new JPanel(new GridLayout(2,2), false);
  使用这些构造函数,我们可以修改FlowLayout中的默认布局管理器,或是通过执行true或false修改默认的双缓冲。 我们可以将JPanel用我们通常目的的容器,或者是用作新组件的基类。对于通常目的容器,其过程很简单:创建面析,如果需要设置其布局管理器,并且使用add()方法添加组件。 当我们需要创建一个新的组件时,派生JPanel并且重写public void paintComponent(Graphics g)方法。尽管我们可以直接派生JComponent,但派生JPanel修改更为合理。列表4-8演示了一个组件绘制适应组件尺寸的椭圆的简单组件,同时包含一个测试驱动。 package swingstudy.ch04; import java.awt.Color; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; publicclass OvalPanel extends JPanel { Color color; public OvalPanel() { this(Color.black); } public OvalPanel(Color color) { this.color = color; } publicvoid paintComponent(Graphics g) { int width = getWidth(); int height = getHeight(); g.setColor(color); g.drawOval(0, 0, width, height); } /** * @param args */publicstaticvoid main(String[] args) { // TODO Auto-generated method stub Runnable runner = new Runnable() { publicvoid run() { JFrame frame = new JFrame("Oval Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); frame.setLayout(new GridLayout(2,2)); Color colors[] = {Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW }; for (int i=0;i
  表4-16显示了JPanelUIResource相关的属性集合。对于JPanel组件,有五个不同的属性。这些设置也许会影响到面板内的组件。
  JPanel UIResource元素 在本章中,我们探讨了所有Swing组件的基类:JComponent类。由讨论我们了解了所有组件的共同元素,例如工具提示,以及特定的组件,例如JLabel。同时我们了解了如何使用Icon接口以及ImageIcon类为组件添加图标,而GrayFilter图像过滤器用于禁止图标。
  我们同时了解了AbstractButton组件,他是所有Swing按钮对象的根对象。我们了解了其数据模型接口,ButtonModel,以及这个接口的默认实现,DefalutButtonModel。接着,我们了解了JButton类,他是最简单的AbstractButton实现。最后,我们了解了作为基本Swing容器对象的JPanel。
  在第5章中,我们将会深入一些复杂的AbstractButton实现:转换按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值