test.java

来自「SWT 基础编程源码」· Java 代码 · 共 55 行

JAVA
55
字号
package com.jixy.baseOnAWT;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Rectangle;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		JFrame frame = new JFrame("Transparent Window");
		JButton button = new JButton("This is a button");
		JLabel label = new JLabel("This is a label");
		MyPanel panel = new MyPanel();
		panel.setSize(100, 100);
		frame.getContentPane().add("Center", panel);
		frame.getContentPane().add("North", button);
		frame.getContentPane().add("South", label);
		frame.pack();
		frame.setSize(150, 100);
		frame.show();
		panel.update(frame.getGraphics());
	}
}

class MyPanel extends Panel {
	private Image bi;

	private Graphics big;

	public void update(Graphics g) {
		paint(g);
	}

	public void paint(Graphics g) {
		if (bi == null) {
			bi = createImage(getSize().width, getSize().height);
			big = bi.getGraphics();
		}
		Rectangle area = g.getClipBounds();
		big.setClip(area);
		big.clearRect(area.x, area.y, area.width, area.height);
		super.paint(big);
		g.drawImage(bi, area.x, area.y, area.x + area.width, area.y
				+ area.height, area.x, area.y, area.x + area.width, area.y
				+ area.height, this);
	}
}

⌨️ 快捷键说明

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