62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;
import java.net.URL;
import java.util.HashMap;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyMainFrame extends BJFrame {
public MyMainFrame() {
Toolkit tk = Toolkit.getDefaultToolkit();
tk.addAWTEventListener(new MyAWTEventListener(),
AWTEvent.KEY_EVENT_MASK);
setTitle("Java之美");
setDefaultCloseOperation(0x3);
setSize(220, 200);
setBack();
setVisible(true);
}
public void setBack() {
HashMap<Integer, JFrame> myframebox = new HashMap<Integer, JFrame>();
myframebox.get(0).dispose();
((JPanel) this.getContentPane()).setOpaque(false);
// Winter.jpg这个图片的位置要跟当前这个类是同一个包下
// URL url = Test.class.getResource("OurSoul.jpg");
ImageIcon img = new ImageIcon("OurSoul.jpg");
JLabel background = new JLabel(img);
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
public static void main(String[] args) {
new MyMainFrameConsole();
}
}
class MyAWTEventListener implements AWTEventListener {
private boolean controlPressed = false;
private boolean shiftPressed = false;
private boolean altPressed = false;
@Override
public void eventDispatched(AWTEvent event) {
if (event.getClass() == KeyEvent.class) {
// 被处理的事件是键盘事件.
KeyEvent keyEvent = (KeyEvent) event;
if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {
keyPressed(keyEvent);
} else if (keyEvent.getID() == KeyEvent.KEY_RELEASED) {
keyReleased(keyEvent);
}
}
}
private void keyPressed(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = true;
} else if (event.getKeyCode() == KeyEvent.VK_ALT) {
altPressed = true;
} else if (event.getKeyCode() == KeyEvent.VK_SHIFT) {
shiftPressed = true;
}
if (controlPressed && altPressed && shiftPressed) {
// 当Ctr + C 被按下时, 进行相应的处理.
// new CaptureScreen();
}
}
private void keyReleased(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = false;
} else if (event.getKeyCode() == KeyEvent.VK_SHIFT) {
shiftPressed = false;
} else if (event.getKeyCode() == KeyEvent.VK_SHIFT) {
altPressed = false;
}
}
}
public ImageIcon (String filename) {
this(filename, filename);
}
public ImageIcon(String filename, String description) {
image = Toolkit.getDefaultToolkit().getImage(filename);
if (image == null) {
return;
}
this.filename = filename;
this.description = description;
loadImage(image);
}
源码如上,他不是getclass(相对于当前类所在的路径)这样去获取的,当然要知道绝对路径了。ImageIcon icon = new ImageIcon("src/包名/img");
要把“src\\”,这里的项目源码文件夹写到new ImageIcon(),这个ImageIcon类型的构造方法的参数列表里?
这里的机制,是“填写相对路径地址”,还是“填写绝对路径”地址的写法,能够让小弟把这里的ImageIcon这个,类型的构造方法体中的“图片文件的路径”,参数,给填写上?
恩师,这里的代码:
ImageIcon icon = new ImageIcon("src/包名/img");
是以什么方式进行“new ImageIcon("src/包名/img");这句代码的构造方法体中的地址填写的方法,是按照什么方法来进行填写的?为什么不写起文件夹”src“所在的上层文件夹的地址?