java吧 关注:1,295,811贴子:12,832,409
  • 5回复贴,共1

透明窗体添加的组件无法设置位置了,求帮助

只看楼主收藏回复

我在网上查过了,没有找到好方法,
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class accessk extends JFrame {
int mouse_x,mouse_y;
int frame_x,frame_y;
boolean okMove;
public static void main(String[] args) {
new accessk().launch();
}
public void launch() {
setLayout(null);
JButton startPlay=new JButton("123");
startPlay.setBounds(0, 0, 40, 40);
setDefaultLookAndFeelDecorated(true); //取消 标题栏装饰
setUndecorated(true); // 取消 标题栏边框
setBackground(new Color(0,0,0,50));
setSize(304, 70);
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
if (g instanceof Graphics2D) { Graphics2D g2d = (Graphics2D)g;
Image image=Toolkit.getDefaultToolkit().getImage(accessk.class.getClassLoader().getResource("image/ww.png"));
g2d.drawImage(image, 0,0,this);
}
}
};
setContentPane(panel);
add(startPlay);
setVisible(true); //窗体随鼠标移动
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
okMove=true; mouse_x=e.getX();
mouse_y=e.getY();
}
public void mouseReleased(MouseEvent e) { okMove=false; } });
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
if(okMove){
int x,y;
frame_x=getLocation().x;
frame_y=getLocation().y;
x=frame_x+e.getX()-mouse_x;
y=frame_y+e.getY()-mouse_y;
System.out.println(x+" "+y);
setLocation(x, y); } } });
} }



1楼2012-10-25 21:55回复
    setContentPane(panel);
    add(startPlay);
    这两句显然就有矛盾,你究竟想让哪个加到窗体上?哪个作为底层面板?


    IP属地:江苏2楼2012-10-25 21:58
    收起回复