Java有关浮动面板(无标题可拖动窗口)

合集下载

android floatwindow使用方法 -回复

android floatwindow使用方法 -回复

android floatwindow使用方法-回复Android FloatWindow 使用方法引言:Android平台上常常需要使用悬浮窗来实现一些特殊的功能,比如悬浮球、悬浮菜单等,而FloatWindow 是一个强大的开源库,可以帮助我们快速实现悬浮窗功能。

本文将详细介绍FloatWindow 的使用方法,包括引入FloatWindow 库、权限申请、悬浮窗的创建、更新和销毁等。

一、引入FloatWindow 库1. 在项目的build.gradle 文件中,添加依赖项:dependencies {implementation 'com.yhao.floatwindow:floatwindow:3.5.0'}2. 在需要使用FloatWindow 的地方,引入FloatWindow 类:javaimport com.yhao.floatwindow.FloatWindow;二、权限申请1. 在AndroidManifest.xml 文件中,添加必要的权限声明,例如悬浮窗权限:xml<uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW" /> 2. 在需要使用悬浮窗的页面或服务中,添加权限申请代码:javaif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M&& !Settings.canDrawOverlays(context)) {Intent intent = newIntent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);intent.setData(Uri.parse("package:" +context.getPackageName()));context.startActivity(intent);}三、创建悬浮窗1. 创建悬浮窗前,需要先初始化FloatWindow,通常在Application 的onCreate 方法中进行初始化:javaFloatWindow.init(context.getApplicationContext());2. 创建一个悬浮窗的View,可以是一个自定义的View,也可以是系统提供的View,例如一个按钮:java自定义ViewView view =LayoutInflater.from(context).inflate(yout_custom_view, null);系统View(例如按钮)View view = new Button(context);3. 使用FloatWindow 来创建悬浮窗:javaFloatWindow.with(context).setView(view).setWidth(Screen.width, 0.2f) 设置悬浮窗宽度为屏幕宽度的20 .setHeight(Screen.width, 0.2f) 设置悬浮窗高度为屏幕宽度的20 .setX(Screen.width, 0.8f) 设置悬浮窗水平偏移为屏幕宽度的80 .setY(Screen.height, 0.3f) 设置悬浮窗垂直偏移为屏幕高度的30 .setDesktopShow(true) 设置悬浮窗显示在桌面上.build();四、更新悬浮窗1. 通过FloatWindow 的updateView 方法来更新悬浮窗的View:javaFloatWindow.get().updateView(view);2. 如果只需要更新悬浮窗的位置、大小等属性,可以使用updateX、updateY、updateWidth、updateHeight 等方法:javaFloatWindow.get().updateX(Screen.width, 0.6f); FloatWindow.get().updateY(Screen.height, 0.5f);五、销毁悬浮窗1. 使用FloatWindow 的destroy 方法销毁悬浮窗:javaFloatWindow.destroy();2. 如果只需要隐藏悬浮窗而不销毁,可以使用hide 方法:javaFloatWindow.get().hide();结尾:通过以上步骤,我们可以很方便地在Android 平台上使用FloatWindow 来创建、更新和销毁悬浮窗。

第7章_Java_awt 509修改 - 副本 (2)

第7章_Java_awt 509修改 - 副本 (2)

17
Frame类(框架)
Frame类是Container类的间接子类。当需要一个窗口时, 可使用Frame或其子类创建一个对象。窗口也是一个容器,
可以向窗口添加组件。窗口默认地被系统添加到显示器屏
幕上,因此,不允许将一个窗口添加到另一个容器中。 Frame是顶级窗口,可以显示标题,重置大小。当Frame 被关闭,将产生WindowEvent事件,Frame无法直接监听 键盘输入事件。
文字、图形、图象… 不能像标准组件一样被系统识别和承认,只起装饰作用。 不能响应用户的动作,不具有交互功能。
8
7.2 组件和容器
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方 式显示在屏幕上并能与用户进行交互的对象,例
如一个按钮,一个标签等。
给用户的技术。
目前Java主要提供了两个处理图形用户界面的类库: java.awt和javax.swing。
2
AWT:抽象窗口工具集(Abstract Windows Toolkit), 其外观取决于具体的平台,可用于Java的applet和 application。 java.awt包中包含了一个完整的类集以支持GUI程序的设 计(重量级构件),比如组件、图形等。
7 7
界面元素
容器是用来组织其他界面成分和元素的单元。
可以形成容器的层次,构筑复杂结构 Window(Frame、Applet、Dialog )
组件是图形用户界面的基本单位,它里面不再包含 其他的成分。
GUI组件是图形用户界面标准化的结果。 GUI组件的作用是完成与用户的交互。
用户自定义成分
Canvas Label TextField TextArea Scrollbar

Java 网页浏览器组件介绍(全的4种)

Java 网页浏览器组件介绍(全的4种)

前言在使用Java 开发客户端程序时,有时会需要在界面中使用网页浏览器组件,用来显示一段HTML 或者一个特定的网址。

本文将介绍在界面中使用浏览器组件的四种方法,给出示例的代码,并且分析每种方法的优点与不足,便于Java 开发者在实际开发过程中根据自己的需要来选择。

回页首JDK 中的实现- JEditorPaneSwing 是一个用于开发Java 应用程序图形化用户界面的工具包,它是以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格,而且它是轻量级(light-weight)组件,没有本地代码,不依赖于操作系统的支持,这是它与AWT 组件的最大的区别。

在Swing 中,有一个组件是JEditorPane,它是一个可以编辑任意内容的文本组件。

这个类使用了EditorKit 来实现其操作,对于给予它的各种内容,它能有效地将其类型变换为适当的文本编辑器种类。

该编辑器在任意给定时间的内容类型由当前已经安装的EditorKit 来确定。

默认情况下,JEditorPane 支持以下的内容类型:•text/plain纯文本的内容,在此情况下使用的工具包是DefaultEditorKit 的扩展,可生成有换行的纯文本视图。

•text/htmlHTML 文本,在此情况下使用的工具包是javax.swing.text.html.HTMLEditorKit,它支持HTML3.2。

•text/rtfRTF 文本,在此情况下使用的工具包是类javax.swing.text.rtf.RTFEditorKit,它提供了对多样化文本格式(Rich Text Format)的有限支持。

JEditorPane 的常用方法JEditorPane()创建一个新的JEditorPane 对象JEditorPane(String url)根据包含URL 规范的字符串创建一个JEditorPaneJEditorPane(String type,String text)创建一个已初始化为给定文件的JEdiorPaneJEditorPane(URL initialPage)根据输入指定的URL 来创建一个JEditorPanescrollToReference(String reference)将视图滚动到给定的参考位置(也就是正在显示的URL 的URL.getRef 方法所返回的值)setContentType(String type)设置此编辑器所处理的内容类型setEditorKit(EditorKit kit)设置当前为处理内容而安装的工具包setPage(String url)设置当前要显示的URL, 参数是一个StringsetPage(URL page)设置当前要显示的URL, 参数是一个.URL 对象JEditorPane 需要注册一个HyperlinkListener 对象来处理超链接事件,这个接口定义了一个方法hyperlinkUpdate(HyperlinkEvent e),示例代码如下:public void hyperlinkUpdate(HyperlinkEvent event){if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED){try{jep.setPage(event.getURL());}catch(IOException ioe){ioe.printStackTrace();}}}完整的代码可以在本文中下载到。

Java图形用户界面设计

Java图形用户界面设计

13
(3) 事件监听器(Listener) 事件处理机制中的核心部分,主要的功能大致可以分为 两部分:第一,监听组件,观察组件有没有发生某类事 件;第二,如果监听的组件发生了某类事件,则调用对 应的动作处理方法立刻处理这个事件。 在Java事件处理机制中,监听器处于主体地位。与事件 分类对应,监听器也相应的分成若干种类型,例如,鼠 标事件对应鼠标监听器,键盘事件对应键盘监听器,窗 口事件对应窗口监听器等。
25
5.3.2 AWT组件库常用组件举例 【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、 btn_2、btn_3。当使用鼠标点击btn_1时,文本框显示 btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框 显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗 口f的关闭按钮时,窗口关闭,程序退出。
(4) Choice Choice表示下拉选择框组件,选择框中的每一个选项称 为一个Item,Item的类型一般为String字符串。 (5) Label Label表示标签组件,主要作用在于创建提示性的文本。
23
(6) MenuBar、Menu和MenuItem MenuBar表示菜单条组件,该组件由Menu菜单构成,而 Menu菜单又可由Menu菜单和MenuItem菜单项构成。 (7) TextField TextField表示文本框组件,与文本域组件不同的是, 文本框中只能有一行文本。 (8) TextArea TextArea表示文本域组件,可以容纳多行文本。
30
(3) JRadioButton和ButtonGroup 在Swing中与Checkbox对应的是JCheckBox,实际使用时, 如果需要创建单选框组的话,经常使用的是 JRadioButton而非JCheckBox。如果将多个JRadioButton 组件放在一个ButtonGroup中时,这些JRadioButton组件 将不再具有复选功能,而是只具有单选功能,也即变成 单选框。 (4) JComboBox JcomboBox对应于AWT中的Choice,表示下拉选择框组件, 选择框中的每一个选项称为一个Item,Item的类型一般 为String字符串,也可以是指定的泛型类型。

Java语言程序设计:第十章 Java图形用户界面

Java语言程序设计:第十章 Java图形用户界面

t}ryesflrs{eaetmD{teer.fypaau{cltkC(l)o; seOperation(EXIT_ON_CLOSE);
选中“ToGoelnUyke}DsiItrMt.caiegmtjefaebreamxtaeIcHtncnmDnLheeaistoea}ep((gidf)oE.ctae;veinkxoaurarAc单.ntcllsstcieo.dTnc击ephmpoardrtetmotLi(i“FneoeEleokte(nnFnS)xoieiSttl”ec(te;kla)}iC”exzA.cgceplkneaetT=dtipsoS“rFtsanicoSNecrnaeeeav)(exlem(){nc;ASeellp”(iz)t)ei保;o()n存;)源{ 文U件I和M工an程a文g件er.getS

有间距
CENTER
的 East
组 容se器tHgap(int hgap)

setVgap(int vgap)

将组件间的水平间距设置为指定的值

将组件间的垂直间距设置为指定的值
下边的组件
South
天津职业技术师范大学
BorderLayout
…… class testFrame extends JFrame {
天津职业技术师范大学
BorderLayout
North

边 West 的
组 容器

上边的组件 CENTER
下边的组件
South
右 边 的 East 组 件
天津职业技术师范大学
BorderLayout
North
方法
左 BorderLay边out( )
West 的

java中jscrollpane用法

java中jscrollpane用法

java中jscrollpane用法JScrollPane是一种用于显示可滚动内容的组件,它可以在内容超出容器边界时提供滚动条,以便用户可以查看全部内容。

在Java中,JScrollPane通常与JPanel、JTable、JList等组件一起使用,以实现滚动显示这些组件的内容。

JScrollPane类是Java Swing库中的一个重要组件,它提供了一个用于显示滚动内容的容器。

通过将需要滚动的组件添加到JScrollPane中,可以实现自动添加垂直或水平滚动条,从而方便用户查看全部内容。

要使用JScrollPane,首先需要创建一个JScrollPane对象。

可以使用以下代码创建一个简单的JScrollPane对象:```javaJScrollPane scrollPane = new JScrollPane();```这将创建一个空的JScrollPane对象,没有添加任何组件。

2. 将组件添加到JScrollPane中接下来,将需要滚动的组件添加到JScrollPane中。

例如,将一个JPanel添加到JScrollPane中:```javaJPanel panel = new JPanel();panel.add(new JLabel("这是一段超长的文本,需要滚动显示"));scrollPane.setViewportView(panel);```这将创建一个包含一段超长文本的JPanel,并将其添加到JScrollPane中。

当内容超出面板边界时,将显示滚动条。

3. 设置滚动条行为可以通过设置JScrollPane的滚动条行为来控制滚动条的显示和行为。

可以使用setVerticalScrollBarPolicy()和setHorizontalScrollBarPolicy()方法来设置垂直和水平滚动条的行为。

例如,以下代码将垂直滚动条设置为自动隐藏:```javascrollPane.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ AS_NEEDED);```4. 调整滚动区域大小可以通过设置Viewport参数来调整滚动区域的大小。

按钮

当用户单击按钮后,Java包 当用户单击按钮后,Java包java.awt.envent 中的类ActionEvent自动创建了一个对象 中的类ActionEvent自动创建了一个对象 例9_2:设计4个按钮,分别命名为加、减、乘、除。 9_2:设计4 有3个文本框,程序将两个文本框的数字做运算,在 第3个文本框中显示结果
Example11_1.java
面板( 面板(续)
ScrollPane类 ScrollPane类
在java.awt包中,是Container类的子类, java.awt包中,是Container类的子类, 其创建的对象称为滚动窗口 与Panel创建的容器之不同: Panel创建的容器之不同:
带有滚动条 只能向滚动窗口添加一个组件,将一些组件 添加到一个面板容器中,在把这个面板添加 到滚动窗口中
Example9_2.java
标签
功能:显示文本,但不能动态编辑文 本 Label类的主要方法: Label类的主要方法:
Label():构造一个无名标签 Label():构造一个无名标签 Label(String):构造有名标签 Label(String):构造有名标签 Label(String ,int ):构造有名标签,并设 ):构造有名标签,并设 置标签中名字的对齐方式,第二个参数 可以是Label.LEFT、 可以是Label.LEFT、 Label.CENTER 、 Label.RIGHT setText(String):设置标签的名字 setText(String):设置标签的名字 getText():获取标签的名字 getText():获取标签的名字 setBackground(Color c):设置标签的颜 c):设置标签的颜 色,默认是背景容器的颜色 setForeground(Color c):设置标签上字 c):设置标签上字 的颜色,默认是黑色

Java swing布局详解(附示例图)

当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。

JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。

下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。

代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。

这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。

Java代码1public static void addComponentsToPane(Container pane) {。

}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。

4*/5private static void createAndShowGUI() {6// Create and set up the window.7JFrame frame = new JFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9// Set up the content pane.10addComponentsToPane(frame.getContentPane());11// Display the window.12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。

16public static void main(String[] args) {17javax.swing.SwingUtilities.invokeLater(new Runnable() {18public void run() {19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。

java dialog用法

java dialog用法Java中的Dialog类是一个弹出窗口。

它和普通窗口很相似,但有一些特殊的功能。

您可以使用它来显示有关消息或请求用户输入的窗口。

Dialog类有两个主要的子类:JDialog和JOptionPane。

JDialog是一个顶层容器,类似于Frame,并支持一些额外的对话框特性,例如模式对话框和防止焦点转移。

JOptionPane是一个预先定义的对话框类,其中包括一些常用的选项,例如消息对话框、输入对话框和确认对话框等。

如何使用Dialog:首先,您需要创建一个Dialog对象。

使用以下代码可创建一个简单的对话框:Dialog dialog = new Dialog(frame, "My Dialog", true);在这个例子中,frame是父窗体。

"My Dialog"参数是对话框标题。

最后的参数true表示这是一个模式对话框,这意味着用户必须在对话框关闭之前完成操作。

接下来,您需要添加一些组件(如标签、按钮、文本框)到对话框中。

然后,您可以使用setVisible()函数将对话框显示出来。

dialog.setVisible(true);最后,您需要为对话框添加事件处理程序,例如处理“关闭对话框”按钮的事件。

Dialog类有一些其他的方法,例如pack()用于调整对话框大小,validate()用于验证布局,以及dispose()用于释放对话框的资源并关闭它。

总结:Dialog类是Java Swing API中的弹出窗口类。

它可以让您显示有关消息或请求用户输入的窗口。

Dialog类有两个主要的子类:JDialog和JOptionPane。

JDialog是一个顶层容器,而JOptionPane是一个预先定义的对话框类。

使用Dialog的步骤是创建一个Dialog对象,添加组件,将对话框可见,为对话框添加事件处理程序,然后使用Dialog类的其他方法进行必要的调整和验证。

joptionpane用法

joptionpane用法JOptionPane 用法JOptionPane 是Java 提供的一种窗体界面,它可以提供丰富功能,包括消息提示,对话框,输入和输出框等,使有界面的 Java 应用变得更加容易开发。

JOptionPane 基于Swing 实现的一个容易使用的窗体工具,它可以方便快捷的把信息显示在屏幕上,同时可以回答用户提出的问题,比如确认,输入框等等。

当要用 JOptionPane 弹出窗体时,首先要导入 javax.swing 包,使用 JOptionPane 之前,需要指定以下几个参数:1.信息内容:要显示的相关信息,可以是文本字符串,也可以是组件,甚至是图片等内容;2.标题:你要为窗体设置一个小标题,标题指定了显示的窗口的标题;3.消息类型:可以在窗体中设置不同种类消息,比如消息,警告,错误,询问等;4.选项:用来指定在窗体出现时所能够选择的按钮,一般是确定按钮,取消按钮,关闭按钮等;5.默认选项:选择哪个按钮作为默认的按钮。

JOptionPane 在实际应用中最常见的使用方法有:showMessageDialog():用来显示一个带有对话框的信息,让用户确认或取消操作。

showInputDialog() :用来让用户输入一些字符串信息,输入后可以选择确定或取消按钮。

showOptionDialog():显示带有不同选项的对话框,用户可以从多个选项中选择,也可以对当前对话框提出确认或取消操作。

用 JOptionPane 显示的窗体都是模态的,也就是当窗体显示出来后,只有关闭它,程序才能继续执行,因此它是一种阻塞式的操作。

JOptionPane 工具类提供了一个简单强大的界面,可以方便快捷的构建复杂的界面,使 Java 应用程序变得更加容易开发。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

package javaapplication1;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TestFrameDemo {static Point origin = new Point(); //全局的位置变量,用于表示鼠标在窗口上的位置static JFrame myFrame = new JFrame();public static void main(String[] args) {myFrame.setUndecorated(true);myFrame.setSize(600, 400);myFrame.setVisible(true);myFrame.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) { //按下(mousePressed 不是点击,而是鼠标被按下没有抬起)origin.x = e.getX(); //当鼠标按下的时候获得窗口当前的位置origin.y = e.getY();}});myFrame.addMouseMotionListener(new MouseMotionAdapter() {public void mouseDragged(MouseEvent e) { //拖动(mouseDragged 指的不是鼠标在窗口中移动,而是用鼠标拖动)Point p = myFrame.getLocation(); //当鼠标拖动时获取窗口当前位置//设置窗口的位置//窗口当前的位置+ 鼠标当前在窗口的位置- 鼠标按下的时候在窗口的位置myFrame.setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y);}});}}此代码我在Myeclipse中执行,请初学者注意包名和类名;这个执行效果为:图中灰色的部分为浮动窗口部分,可随意拖动,但是要在任务栏右击才能关闭窗口;2、用NetBeans写的Java Swing模仿Vista磨砂玻璃效果透明窗体第3版上面是原文作者的标题,我在Myeclipse里面试过了,也能正常运行,无需修改代码,但是可能有些用户需要修改Myeclipse默认的jre,这个最后说,先看一下代码:package javaapplication1;import java.awt.Robot;import java.awt.*;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Image;import java.awt.Point;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import ponentEvent;import ponentListener;import java.awt.event.WindowEvent;import java.awt.event.WindowFocusListener;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.UIManager;import javax.swing.*;import java.awt.image.*;import java.awt.color.*; public class NewJFrame extends javax.swing.JFrame { boolean movieTf=false;Point mainP=new Point(); public NewJFrame() {//構造方法this.setUndecorated(true);//去掉JFrame的标题栏Image ico=Toolkit.getDefaultToolkit().getImage("g:/h2.jpg");this.setIconImage(ico);try {UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); //UI设置//UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAn dFeelClassName());//windows樣式}catch (Exception ex) {javax.swing.JOptionPane.showMessageDialog(this,"發生UI加載錯誤,您可能無法看到程式預想的UI效果,錯誤信息如下:\n"+ex.toString()); initComponents();this.setLocation(100,100); // <editor-fold defaultstate="collapsed" desc=" 生成的代码">private void initComponents() {jlb = new javax.swing.JLabel();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOS E);setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));addWindowFocusListener(new java.awt.event.WindowFocusListener() { public void windowGainedFocus(java.awt.event.WindowEvent evt) {formWindowGainedFocus(evt); public void windowLostFocus(java.awt.event.WindowEvent evt) {formWindowLostFocus(evt); });addComponentListener(new ponentAdapter() { public void componentMoved(ponentEvent evt) {formComponentMoved(evt); public void componentResized(ponentEvent evt) {formComponentResized(evt); });jlb.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(128, 128, 128)));jlb.addMouseListener(new java.awt.event.MouseAdapter() {public void mouseClicked(java.awt.event.MouseEvent evt) {jlbMouseClicked(evt); public void mousePressed(java.awt.event.MouseEvent evt) {jlbMousePressed(evt); public void mouseReleased(java.awt.event.MouseEvent evt) {jlbMouseReleased(evt); });jlb.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) {jlbMouseDragged(evt); public void mouseMoved(java.awt.event.MouseEvent evt) {jlbMouseMoved(evt); });javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN G).addComponent(jlb, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 289, Short.MAX_VALUE) layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN G).addComponent(jlb, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 762,Short.MAX_VALUE) pack();}// </editor-fold>private void jlbMousePressed(java.awt.event.MouseEvent evt) {// TODO 将在此处添加您的处理代码:mainP.x = evt.getX();//当鼠标按下的时候获得窗口当前的位置mainP.y = evt.getY();}private void jlbMouseDragged(java.awt.event.MouseEvent evt) {// TODO 将在此处添加您的处理代码://鼠标拖动this.jlb.setIcon(null); //拖動時候將圖片去除Point p = this.getLocation();//当鼠标拖动时获取窗口当前位置this.setLocation(p.x + evt.getX() - mainP.x, p.y + evt.getY()- mainP.y);}private void jlbMouseMoved(java.awt.event.MouseEvent evt) {// TODO 将在此处添加您的处理代码://鼠標移動}private void jlbMouseReleased(java.awt.event.MouseEvent evt) {// TODO 将在此处添加您的处理代码://鼠標放開this.selectBgimg();}private void jlbMouseClicked(java.awt.event.MouseEvent evt) {// TODO 将在此处添加您的处理代码://鼠標點擊//this.selectBgimg();}private void formWindowLostFocus(java.awt.event.WindowEvent evt) {// TODO 将在此处添加您的处理代码://失去焦點}private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {// TODO 将在此处添加您的处理代码://得到焦點this.selectBgimg(); }private void formComponentResized(ponentEvent evt) {// TODO 将在此处添加您的处理代码://儅窗口改變大小this.selectBgimg();}private void formComponentMoved(ponentEvent evt) {// TODO 将在此处添加您的处理代码://儅窗口移動//if(this.tf=false){// this.selectBgimg(); }private void selectBgimg(){//截屏代码//this.tf=true;try {Point p=this.getLocation();//移動方式,用pthis.setLocation(-2000,-2000);//移動方式//this.setVisible(false);//隱藏方式,用thisRobot rbt = new Robot();Toolkit tk = Toolkit.getDefaultToolkit();Dimension dim = tk.getScreenSize(); //截圖BufferedImage background = rbt.createScreenCapture(new Rectangle((int)p.getX()+1,(int)p.getY()+1, this.getWidth()-2,this.getHeight()-2));background = rbt.createScreenCapture(new Rectangle((int)p.getX()+1,(int)p.getY()+1, this.getWidth()-2,this.getHeight()-2));background = rbt.createScreenCapture(new Rectangle((int)p.getX()+1,(int)p.getY()+1, this.getWidth()-2,this.getHeight()-2));background = rbt.createScreenCapture(new Rectangle((int)p.getX()+1,(int)p.getY()+1, this.getWidth()-2,this.getHeight()-2)); float[] data={//0.0625f,0.125f,0.0625f,//0.125f,0.125f,0.125f,//0.0625f,0.125f,0.0625f, 0.0625f,0.125f,0.0625f,0.125f,0.125f,0.125f,0.0625f,0.125f,0.0625f,//0.170f,0.06f,0.170f,//0.06f,0.06f,0.06f,//0.170f,0.06f,0.170f, Kernel kernel= new Kernel(3,3,data);ConvolveOp co= new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null); BufferedImage background2=null;background2=co.filter(background,background2);ImageIcon bg=new ImageIcon(background2);jlb.setIcon(bg);//this.setVisible(true);//隱藏方式this.setLocation(p);//移動方式} catch (Exception ex) {javax.swing.JOptionPane.showMessageDialog(this,"透明效果發生錯誤,程序無法啓動,錯誤信息如下:\n"+ex.toString());}//this.tf=false;}public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {public void run() {new NewJFrame().setVisible(true);}});}// 变量声明- 不进行修改private javax.swing.JLabel jlb;// 变量声明结束}在此附上这个的运行效果:。

相关文档
最新文档