📄 suspendeddialog.java
字号:
package downfile;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.net.URL;
import java.net.URLClassLoader;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JToolTip;
import javax.swing.ToolTipManager;
class SuspendedPanel extends JPanel{
public ImageIcon i;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
URLClassLoader urlLoader1 = (URLClassLoader)this.getClass().getClassLoader();
URL url1 = null;
url1 = urlLoader1.findResource("images/main.jpg");
i = new ImageIcon(url1);
Image ii=i.getImage();
g.drawImage(ii,0,0,40,40,this);
}
}
public class SuspendedDialog extends JDialog implements Runnable{
JLabel lb = new JLabel();
int mouseX = 0;
int mouseY = 0;
JPopupMenu popup = new JPopupMenu();
JMenuItem openmenu = new JMenuItem("打开/隐藏");
JMenuItem xinjianmenu = new JMenuItem("新建任务");
JCheckBoxMenuItem spedialogmenu = new JCheckBoxMenuItem("悬浮窗");
JMenuItem aboutmenu = new JMenuItem("关于下载器");
JMenuItem exitmenu = new JMenuItem("退出");
static JToolTip tip = new JToolTip();
SuspendedPanel pane = pane = new SuspendedPanel(){
public JToolTip createToolTip(){
return tip;
}
};
public SuspendedDialog(){
setUndecorated(true);
setAlwaysOnTop(true);
pane.setToolTipText("java下载器");
lb.setForeground(Color.BLUE);
pane.add(lb);
ToolTipManager.sharedInstance().setDismissDelay(1000000);// 10 seconds
popup.add(openmenu);
popup.addSeparator();
popup.add(xinjianmenu);
popup.add(spedialogmenu);
popup.addSeparator();
popup.add(aboutmenu);
popup.addSeparator();
popup.add(exitmenu);
openmenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(MainFrame.main.isVisible()){
MainFrame.main.setVisible(false);
}
else MainFrame.main.setVisible(true);
}
});
xinjianmenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainFrame.main.setVisible(true);
XinJianDialog xinjian = new XinJianDialog(MainFrame.main,"新建任务",MainFrame.tablemodel);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = xinjian.getSize();
xinjian.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
xinjian.setResizable(false);
xinjian.setVisible(true);
}
});
spedialogmenu.setSelected(true);
spedialogmenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(spedialogmenu.getState()){
JSplashWindowPlus.dialog.setVisible(true);
MainFrame.main.Spebutton.setSelected(true);
MainFrame.main.spemenuitem.setSelected(true);
}else{
JSplashWindowPlus.dialog.setVisible(false);
MainFrame.main.Spebutton.setSelected(false);
MainFrame.main.spemenuitem.setSelected(false);
}
}
});
aboutmenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension mainSize = MainFrame.about.getSize();
MainFrame.about.setLocation((screenSize.width - mainSize.width) / 2,
(screenSize.height - mainSize.height) / 2);
MainFrame.about.setVisible(true);
}
});
exitmenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
MainFrame.main.setVisible(false);
MainFrame.main.writeTreeNode();
for(int i=0;i<MainFrame.tablemodel.downloadingList.size();i++){
Download download = (Download)MainFrame.tablemodel.downloadingList.get(i);
if(download.getStatus() == Download.DOWNLOADING)
download.pause();
}
if(MainFrame.tablemodel.downloadingList.size()!=0){
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
MainFrame.main.writeNode1();
System.exit(0);
}
});
PopupListener treepo = new PopupListener(popup);
pane.addMouseListener(treepo);
pane.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent mouseEvent){
if(mouseEvent.getButton() == mouseEvent.BUTTON1) {
mouseX = mouseEvent.getX();
mouseY = mouseEvent.getY();
}
}
public void mouseClicked(MouseEvent e){
if(e.getClickCount() == 2){
if(MainFrame.main.isVisible()) MainFrame.main.setVisible(false);
else MainFrame.main.setVisible(true);
}
}
});
pane.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
if(e.getModifiers() ==e.BUTTON1_MASK){
setLocation(getX() + e.getX() - mouseX,
getY() + e.getY() - mouseY);
}
}
});
setSize(40,40);
setContentPane(pane);
}
public void run(){
int j=0;
while(true){
if(MainFrame.tablemodel.downloadingList.size()!=0){
String toolTips = "";
for(int i=0;i<MainFrame.tablemodel.downloadingList.size();i++){
Download download = (Download) MainFrame.tablemodel.downloadingList.get(i);
toolTips =toolTips +"<br>"+"文件名:"+download.getFileName()+"-速度:"
+(float)download.getSpeed()/1024
+"K/S-下载进度:"+(int)download.getProgress()+"%";
}
toolTips = "<html>"+toolTips+"</html>";
pane.setToolTipText(toolTips);
tip.setTipText(toolTips);
tip.updateUI();
}else{
pane.setToolTipText("java下载器");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(MainFrame.tablemodel.downloadingList.size() == 0)
lb.setText("");
if(MainFrame.tablemodel.downloadingList.size()!=0){
Download download = (Download) MainFrame.tablemodel.downloadingList.get(j);
lb.setText(""+(int)download.getProgress()+"%");
j++;
if(j>=MainFrame.tablemodel.downloadingList.size()){
j=0;
}
}
}
}
public void start(){
Thread thread = new Thread(this);
thread.start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -