如何实现类似于foxmail的提示栏? 我现在需要使用一个提示栏,独立于JFrame,上面需要实现文字的滚动。该如何实现?使用GlassPane虽然可以模拟出来,但是,当GlassPane的visible属性为true的时候JFrame无法操作,所以,无法使用,是不是需要通过JWindow实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.awt.Color;import java.awt.Point;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JWindow;import javax.swing.border.LineBorder;public class WindowTest extends JFrame{ class ToolTipWindow extends JWindow implements Runnable { private final class MouseAdapterL extends MouseAdapter { public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } public void mousePressed(MouseEvent e) { p1 = e.getPoint(); } JPopupMenu popup; MouseAdapterL(JPopupMenu popupMenu) { popup = popupMenu; } public void mouseEntered(MouseEvent e) { super.mouseEntered(e); mouseEntered = true; } public void mouseExited(MouseEvent e) { super.mouseExited(e); mouseEntered = false; } } public void run() { StringBuffer buffer = new StringBuffer(" I AM ALARM1 THIS IS THE MSG2"); int index = 0; int len = buffer.length(); StringBuffer buffer2 = new StringBuffer(len); while (true) { if (!mouseEntered) { index = ((++index) % len); buffer2.setLength(0); buffer2.append(buffer.substring(index)); buffer2.append(buffer.substring(0, index)); label.setText(buffer2.toString()); } try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } } private JLabel label; Point p1; public ToolTipWindow(JFrame frame) { super(frame); getContentPane().add(getLabel()); setLocation(100, 10); setSize(400, 20); setVisible(true); } JPopupMenu popup; private boolean mouseEntered; protected JLabel getLabel() { if (label == null) { label = new JLabel(" I AM ALARM1 THIS IS THE MSG2"); label.setBorder(new LineBorder(Color.GREEN, 1, false)); // Create the popup menu. popup = new JPopupMenu(); JMenuItem menuItem = new JMenuItem("A popup menu item"); popup.add(menuItem); label.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { setLocation(getLocation().x + e.getPoint().x - p1.x, getLocation().y + e.getPoint().y - p1.y); } }); label.addMouseListener(new MouseAdapterL(popup)); } return label; } } /** * Launch the application * * @param args */ public static void main(String args[]) { try { WindowTest frame = new WindowTest(); ToolTipWindow win = frame.new ToolTipWindow(frame); win.toFront(); (new Thread(win)).start(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the frame */ public WindowTest() { super(); setBounds(100, 100, 500, 375); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(JFrame.MAXIMIZED_BOTH); // }} smslib 通过短信猫读取短信相关问题。请高手请教。。。。 有没有一些关于字符转码的文章啊 现在困惑 java RMI 如下是什么异常? Java 中 <> 的用法 vb语言 TempA = b(j): b(j) = b(N - KK + 1): b(N - KK + 1) = TempA 翻译为java是什么 关于获取文件属性的问题 关于异常问题 Applet程序应该怎么样改成本地应用程序? 【如何判断一个 GUI 组件是否得到焦点】 jdk1.5中遇到的一些问题 请问怎么除掉JBUTTON的边框阿????
import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JWindow;
import javax.swing.border.LineBorder;public class WindowTest extends JFrame
{
class ToolTipWindow extends JWindow implements Runnable
{
private final class MouseAdapterL extends MouseAdapter
{
public void mouseReleased(MouseEvent e)
{
maybeShowPopup(e);
} private void maybeShowPopup(MouseEvent e)
{
if (e.isPopupTrigger())
{
popup.show(e.getComponent(), e.getX(), e.getY());
}
} public void mousePressed(MouseEvent e)
{
p1 = e.getPoint();
} JPopupMenu popup; MouseAdapterL(JPopupMenu popupMenu)
{
popup = popupMenu;
} public void mouseEntered(MouseEvent e)
{
super.mouseEntered(e);
mouseEntered = true;
} public void mouseExited(MouseEvent e)
{
super.mouseExited(e);
mouseEntered = false;
}
} public void run()
{
StringBuffer buffer = new StringBuffer(" I AM ALARM1 THIS IS THE MSG2");
int index = 0;
int len = buffer.length();
StringBuffer buffer2 = new StringBuffer(len);
while (true)
{
if (!mouseEntered)
{
index = ((++index) % len);
buffer2.setLength(0);
buffer2.append(buffer.substring(index));
buffer2.append(buffer.substring(0, index));
label.setText(buffer2.toString());
}
try
{
Thread.sleep(200);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
} private JLabel label; Point p1; public ToolTipWindow(JFrame frame)
{
super(frame);
getContentPane().add(getLabel());
setLocation(100, 10);
setSize(400, 20);
setVisible(true);
} JPopupMenu popup; private boolean mouseEntered; protected JLabel getLabel()
{
if (label == null)
{
label = new JLabel(" I AM ALARM1 THIS IS THE MSG2");
label.setBorder(new LineBorder(Color.GREEN, 1, false));
// Create the popup menu.
popup = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("A popup menu item");
popup.add(menuItem);
label.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
setLocation(getLocation().x + e.getPoint().x - p1.x, getLocation().y + e.getPoint().y - p1.y);
}
});
label.addMouseListener(new MouseAdapterL(popup));
}
return label;
}
} /**
* Launch the application
*
* @param args
*/
public static void main(String args[])
{
try
{
WindowTest frame = new WindowTest();
ToolTipWindow win = frame.new ToolTipWindow(frame);
win.toFront();
(new Thread(win)).start();
frame.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
} /**
* Create the frame
*/
public WindowTest()
{
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
//
}
}