
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();
// }
// }
} 展开
在一个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();
// }
// }
} 展开
2个回答
展开全部
估计你这个问题得不到答案,java作界面本来用的就不多,研究这个的人也不多吧,况且他还很麻烦,市面上关于java页面特效的资料都不多。
我个人劝你不要再这上面浪费太多的时间,因为根本就没有人用它做C/S模式。
B/S模式下的页面特效是用JavaScript做的,有空研究下JavaScript多好呢。
你要真想得到答案到一个专业的Java论坛中去找答案,这里初学者和中级水平的人很多,你这个尖端的问题得到答案的几率不高!呵呵。。。。。
我个人劝你不要再这上面浪费太多的时间,因为根本就没有人用它做C/S模式。
B/S模式下的页面特效是用JavaScript做的,有空研究下JavaScript多好呢。
你要真想得到答案到一个专业的Java论坛中去找答案,这里初学者和中级水平的人很多,你这个尖端的问题得到答案的几率不高!呵呵。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询