用背景透明的png图片
不规则窗体不规则窗体
package com.wwh.excel.tools.swing;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.File;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import com.wwh.excel.tools.worker.Csv2Xls;
public class ImageFrame extends JFrame {
private static final long serialVersionUID = 1L;
private ImageIcon icon;
private Point origin = new Point();; // 用于移动窗体
// 小弹出框
private PopupDialog popupDialog;
public ImageFrame(ImageIcon icon2) {
this.icon = icon2;
JLabel imageLabel = new JLabel() {
private static final long serialVersionUID = 1L;
@Override
public void paint(Graphics g) {
super.paint(g);
icon.paintIcon(this, g, 0, 0);
}
};
this.add(imageLabel);
this.setUndecorated(true); // 关键语句1 不启用窗体装饰
this.setSize(icon.getIconWidth(), icon.getIconHeight()); // 设置窗口大小
// 这个需要包的支持
// AWTUtilities.setWindowOpaque(this, false);
// JDK 1.7 版本以上,使用 this.setBackground(new Color(0, 0, 0, 0));
this.setBackground(new Color(0, 0, 0, 0)); // 关键句2
// 设置透明度
this.setOpacity(0.9f);
this.setLocationRelativeTo(null); // 设置窗口居中
// setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 鼠标事件监听
// 由于取消了默认的窗体结构,所以我们要手动设置一下移动窗体的方法
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
origin.x = e.getX();
origin.y = e.getY();
}
// 窗体上单击鼠标右键关闭程序
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
System.exit(0);
} else {
if (popupDialog != null) {
popupDialog.showDelayHide();
}
}
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Point p = getLocation();
setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.y);
}
});
drag(imageLabel);
// 设置窗口图标
Image img2 = Toolkit.getDefaultToolkit().getImage(ImageFrame.class.getResource("/icon.png"));
setIconImage(img2);
}
// 定义的拖拽方法
public void drag(Component c) {
// c 表示要接受拖拽的控件
new DropTarget(c, DnDConstants.ACTION_COPY_OR_MOVE, new DropTargetAdapter() {
@Override
public void drop(DropTargetDropEvent dtde)// 重写适配器的drop方法
{
try {
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))// 如果拖入的文件格式受支持
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);// 接收拖拽来的数据
@SuppressWarnings("unchecked")
List<File> list = (List<File>) (dtde.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor));
if (list.size() > 1) {
JOptionPane.showMessageDialog(null, "一次拖一个文件,靓仔");
return;
}
Csv2Xls.convert(list.get(0));
popupDialog.showDelayHide();
dtde.dropComplete(true);// 指示拖拽操作已完成
} else {
dtde.rejectDrop();// 否则拒绝拖拽来的数据
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "出错了,靓仔\n" + e.getMessage());
}
}
});
}
public PopupDialog getPopupDialog() {
return popupDialog;
}
public void setPopupDialog(PopupDialog popupDialog) {
this.popupDialog = popupDialog;
}
}
不规则弹出框
package com.wwh.excel.tools.swing;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.Timer;
public class PopupDialog extends JDialog {
private static final long serialVersionUID = 1L;
private ImageIcon icon;
private Frame owner;
private Timer timer;
private void initTimer(int delayTime) {
// 定时消失
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
setVisible(false);
}
};
timer = new Timer(delayTime, taskPerformer);
timer.setRepeats(false);
}
/**
* Create the dialog.
*/
public PopupDialog(Frame owner, ImageIcon icon2, int delayTime) {
super(owner);
this.icon = icon2;
this.owner = owner;
initTimer(delayTime);
JLabel imageLabel = new JLabel() {
private static final long serialVersionUID = 1L;
@Override
public void paint(Graphics g) {
super.paint(g);
icon.paintIcon(this, g, 0, 0);
}
};
this.add(imageLabel);
this.setUndecorated(true); // 关键语句1 不启用窗体装饰
this.setSize(icon.getIconWidth(), icon.getIconHeight()); // 设置窗口大小
// 这个需要包的支持
// AWTUtilities.setWindowOpaque(this, false);
// JDK 1.7 版本以上,使用 this.setBackground(new Color(0, 0, 0, 0));
this.setBackground(new Color(0, 0, 0, 0)); // 关键句2
this.setLocationRelativeTo(owner);
this.setDefaultCloseOperation(HIDE_ON_CLOSE);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
PopupDialog.this.setVisible(false);
}
});
}
/**
* 先显示再延期隐藏
*/
public void showDelayHide() {
this.setLocationRelativeTo(owner);
setVisible(true);
timer.start();
}
@Override
public void setVisible(boolean b) {
super.setVisible(b);
if (!b) {
timer.stop();
}
}
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
ImageIcon icon = new ImageIcon(PopupDialog.class.getResource("/images/success.png"));
PopupDialog dialog = new PopupDialog(null, icon, 10000);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// dialog.setVisible(true);
dialog.showDelayHide();
} catch (Exception e) {
e.printStackTrace();
}
}
}
网友评论