java 组件 渐隐效果.

这想要的效果是这样.在一个JFrame里面放一个JPanel.当鼠标移动某一个位置的时候.这个JPanel就会一点一点从这个位置移动出来.当鼠标离开这个JPanel时,这... 这想要的效果是这样.
在一个JFrame里面放一个JPanel.当鼠标移动某一个位置的时候.这个JPanel就会一点一点从这个位置移动出来.
当鼠标离开这个JPanel时,这个JPanel又会一点一点的移动走.

这个效果应该怎么写?

以下代码是现在这写的,只是能正常出现和隐藏,但不能实现渐现渐隐的效果.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestMovePane extends JFrame implements MouseListener, MouseMotionListener {

int JPNewLoc = -170;

JPanel jp = new JPanel();

JCheckBox jcb = new JCheckBox();
JButton jb = new JButton("Test");

public TestMovePane(String title) {
super(title);
jp.setLayout(null);
jcb.setBounds(10, 10, 50, 50);
jp.add(jcb);
jb.setBounds(10, 30, 100, 50);
jp.add(jb);
jp.setVisible(false);
jp.setBackground(Color.RED);

jp.addMouseListener(this);

setLayout(null);
jp.setBounds(0, JPNewLoc, this.getWidth(), 200);
add(jp);
addMouseMotionListener(this);
}

public static void main(String[] args) {
TestMovePane tmp = new TestMovePane("Test");
tmp.setSize(800, 600);
tmp.setVisible(true);
tmp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
// if (e.getSource() == jp && jp.isVisible()) {
// moveJPanelToHidde();
// }
}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseMoved(MouseEvent e) {
System.out.println("is move _" + e.getY());
if (e.getY() <= 30 && !jp.isVisible()) {
System.out.println("in this methd");
jp.setVisible(true);
moveJPanelToAllShow();
}
if (e.getY() >= 230 && jp.isVisible()) {
moveJPanelToHidde();
}
}

private void moveJPanelToHidde() {
if (jp.getY() > -230) {
JPNewLoc --;
jp.setBounds(0, JPNewLoc, this.getWidth(), 200);
moveJPanelToHidde();
if (jp.getY() <= 30) jp.setVisible(false);
}
}

private void moveJPanelToAllShow() {
if (jp.getY() < 0) {
JPNewLoc++;
// deLay();
jp.setBounds(0, JPNewLoc, this.getWidth(), 200);
// repaint();
moveJPanelToAllShow();
}
}

// private void deLay() {
// try {
// Thread.sleep(10);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }

}
展开
 我来答
yehaizi_2008
2008-07-13 · TA获得超过276个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:319万
展开全部
估计你这个问题得不到答案,java作界面本来用的就不多,研究这个的人也不多吧,况且他还很麻烦,市面上关于java页面特效的资料都不多。

我个人劝你不要再这上面浪费太多的时间,因为根本就没有人用它做C/S模式。

B/S模式下的页面特效是用JavaScript做的,有空研究下JavaScript多好呢。

你要真想得到答案到一个专业的Java论坛中去找答案,这里初学者和中级水平的人很多,你这个尖端的问题得到答案的几率不高!呵呵。。。。。
滩头守望者
2008-07-13 · TA获得超过112个赞
知道答主
回答量:210
采纳率:0%
帮助的人:0
展开全部
我知道07年好像出了一个com.awt包,在这个里面应该可以实现,但是我到现在还没有下载到这个包啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式