import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.Window;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.awt.image.MemoryImageSource;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import demo.ImageJPanel;
public class TranslucentWindow extends JFrame {
Image img = null;
Image img2 = null;
Image im = null;
Image im2 = null;
Image im3 = null;
ImageFilter imgf = null;
FilteredImageSource fis = null;
public TranslucentWindow() {
super("透明窗体");
this.setLayout(new FlowLayout());
this.setBackground(new Color(255,255,255));
// this.add(new JButton("按钮"));
// this.add(new JCheckBox("复选按钮"));
// this.add(new JRadioButton("单选按钮"));
// this.add(new JProgressBar(20, 100));
this.setSize(new Dimension(600, 500));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
img = new ImageIcon("e:/123.jpg").getImage();
ImageJPanel imageJP = new ImageJPanel(img);
imgf = new myImage(100, 100, 100);// 调用自定义类进行对象构造
fis = new FilteredImageSource(img.getSource(), imgf);// 对图象的源(图象生产者)进行过滤处理,构造出FilteredImageSource对象实例
img = this.createImage(fis);// 通过FilteredImageSource实例生成Image
// this.getGraphics().drawImage(img, 0 , 0, this );
this.add(imageJP);
this.setSize(imageJP.getWidth(), imageJP.getHeight() + 35);// 这里+35
// 是因为JFrame上会有个标题栏
// 他会占35像素
// this.setVisible(true);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Window w = new TranslucentWindow();
ImageFilter imf = new ImageFilter();
w.setVisible(true);
//////////////////////////////
Point[] points = new Point[]{
new Point(100,100),
new Point(200,100),
new Point(200,200),
new Point(100,200),
new Point(100,100),
new Point(120,120),
new Point(180,120),
new Point(180,180),
new Point(120,180),
new Point(120,120),
new Point(100,100),
new Point(90,210),
new Point(210,210),
new Point(210,230),
new Point(90,230),
new Point(90,210),
// new Point(80,240),
// new Point(220,240),
// new Point(220,260),
// new Point(80,260),
// new Point(80,240),
};
Polygon polygon = new Polygon();
for(int i = 0; i < points.length; i++){
polygon.addPoint(points[i].x, points[i].y);
// polygon.addPoint(34, 345);
// polygon.addPoint(300, 345);
// polygon.addPoint(0, 0);
}
com.sun.awt.AWTUtilities.setWindowShape(w, polygon);
//////////////////////////////
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.6f);
}
});
}
}
分享到:
相关推荐
对于“JAVA创建不规则窗口”这一主题,我们主要关注的是如何利用Swing实现非标准形状的窗口,以及如何创建半透明效果的窗口。这是一项高级特性,通常需要对图形用户界面(GUI)编程有深入的理解。 首先,要创建不...
下面将详细探讨如何在Eclipse中开发Java不规则窗口。 首先,我们需要理解Java中的AWT(Abstract Window Toolkit)和Swing库。这两个库提供了创建窗口和图形的基本框架。在AWT中,`java.awt.Frame`类是用于创建窗口...
Java绘制不规则几何图形,比如划曲线,写字,线条随意画,如截图所示,甚至可以写出文字: 不规则图形的绘制代码: public class IrregularShapeDemo extends JFrame { GeneralPath gPath= new ...
不规则窗体的大体构建思路与以前没有什么不同,在这里,我仅陈述在java中怎样实现它。本次内容在eclipse平台下开发,需要swt 的插件,可以到swt的官方网站www.swt-designer.com去下载。
不规则窗体(Irregular Frame)是指那些形状不再局限于矩形的窗口。在传统的Java GUI中,窗体通常是标准的矩形,但JDK 1.6通过提供对自定义形状的支持,允许开发者创建具有任意形状的窗体。实现这一功能的关键在于...
在Java Swing中,LookAndFeel 是一套规则,定义了组件的颜色、字体、布局和其他视觉属性。默认情况下,Swing会自动采用操作系统的默认LookAndFeel,但开发者可以通过编程方式更改它,以实现跨平台的一致性或特定的...
7. **异常处理**:考虑到用户可能会进行非法操作,如尝试移动不存在的棋子或在不可行的位置上移动,程序应包含异常处理机制,以确保游戏的稳定性和用户体验。 总的来说,这个项目展示了Java GUI编程的基本技巧,...
Java俄罗斯方块是一款基于Java编程语言开发的经典游戏,它的特点是采用了不规则的窗口设计,为玩家带来了独特的视觉体验。在这款游戏中,不同形状的方块会从屏幕顶部落下,玩家需要通过旋转和移动这些方块,使它们在...
7. 异常处理:在任何软件开发中,异常处理都是必不可少的部分。Java提供了try-catch-finally结构来捕获和处理可能出现的错误,确保程序的稳定运行。 8. 资源管理:游戏可能包含音频、图片等资源,Java提供了...
### Java Swing中的透明和不规则窗口技术解析 在软件开发领域,尤其是图形用户界面(GUI)设计中,跨平台框架的局限性和灵活性始终是开发者关注的焦点。Java Swing作为广泛使用的跨平台GUI工具箱之一,其对透明和不...
SWT,AWT/Swing外,java的另一种桌面窗口程序的开发包。做JAVA桌面窗口开发,我们有了更多的选择。此API是我自己生成的。对应的SWT版本是我网上下的最新的,版本是swt-3.4,里面没有API。网上也没找到最新版本的,我...
《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。 《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...
Swing提供了诸如JFrame、JButton、JLabel等组件,用于构建窗口、按钮和标签等界面元素。 飞行棋游戏的实现涉及到许多核心概念,如游戏规则的逻辑实现、玩家交互和状态管理。游戏逻辑通常包括飞机的移动规则、碰撞...
### JAVA游戏开发规则详解 #### 一、游戏开发规则 **1. 游戏类型** 在着手开发游戏之前,明确游戏类型至关重要。不同类型的游戏在设计理念和技术实现上有着显著差异。 - **RTS(即时战略类游戏)** - **实时...
7. **游戏规则逻辑**:实现飞行棋的核心在于正确地实现游戏规则,包括棋子的起飞、跳跃、连跳、被吃等规则。这需要编写对应的逻辑代码来处理。 8. **测试与调试**:在开发过程中,单元测试和集成测试是必不可少的,...
5. **棋子移动逻辑**:`Chess.java`可能包含了棋子移动的业务逻辑,包括合法性检查(例如,不能移动到被己方棋子占据的位置,不能违反象的行走规则等)以及棋局状态更新。 6. **枚举类(ENUM)**:`MOVE.java`可能...
Java源代码必须遵循一定的语法规则,包括但不限于变量声明、方法定义、类结构等。例如,一个简单的Java源程序可能包含以下元素: ```java public class SimpleSearch { public static void main(String[] args) { ...
在设计布局时,确保气泡提示窗口的形状和大小符合预期,通常是不规则形状,底部有一个指向主体窗口的小尾巴。 3. **文本和图标**:创建JLabel实例来展示提示信息,可以使用HTML标签来格式化文本,添加粗体、斜体或...
7. **文件I/O**:在保存游戏进度、读取配置文件或加载资源时,文件I/O操作必不可少。Java的`java.io`包提供了流式I/O,如`FileInputStream`和`FileOutputStream`,以及对象序列化技术。 8. **异常处理**:良好的...