import javax.swing.*
import java.awt.*
public class 超链接 extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 107369444274434673L
JFrame jf = new JFrame("一个超链接实现的例子")
JPanel jp = new JPanel()
JButton butt = new JButton("确定d出")
MyDialog1 mydialog
超链接() {
butt.addActionListener(this)
jp.add(butt)
jf.setContentPane(jp)
jf.pack()
jf.setBounds(40, 40, 200, 200)
jf.setVisible(true)
}
public static void main(String[] args) {
new 超链接()
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == butt) {
mydialog=new MyDialog1(jf,"提示",true)
mydialog.setVisible(true)
}
}
}
//1.须为有模式对话框
//2。要能在母窗体的中央d出==未实现
//部分代码可能有更好的实现....总之是要能加入那个自定义的JLabel
class MyDialog1 extends Dialog implements ActionListener{
static final int YES=1,NO=0
int message=-1
Button yes,no
MyDialog1(Frame f,String s,boolean b){
super(f,s,b)
LinkLabel2 label = new LinkLabel2("百度一下,你就知道", "http://www.baidu.cn")
yes=new Button("Yes")
yes.addActionListener(this)
no=new Button("No")
no.addActionListener(this)
setLayout(new FlowLayout())
add(label)
add(yes)
add(no)
//setBounds(60,60,100,100)
setSize(350,100)
int winWidth=getBounds().width//获取窗口的款等于320
int winHeigth=getBounds().height//获取窗口的款等于350
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize()
int screenWidth = (int)dim.getWidth()//获取屏幕的宽
int screenHeight = (int)dim.getHeight()//获取屏幕的高
setLocation((screenWidth-winWidth)/2, (screenHeight-winHeigth)/2)//定制窗口的位置
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
message=-1setVisible(false)
}
}
)
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==yes){
message=YESsetVisible(false)
}
else if(e.getSource()==no){
message=NOsetVisible(false)
}
}
public int getMessage(){
return message
}
}
class LinkLabel2 extends JLabel {
private String text, url
private boolean isSupported
public LinkLabel2(String text, String url) {
this.text = text
this.url = url
try {
this.isSupported = Desktop.isDesktopSupported()
&&Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)
} catch (Exception e) {
this.isSupported = false
}
setText(false)
addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
setText(isSupported)
if (isSupported)
setCursor(new Cursor(Cursor.HAND_CURSOR))
}
public void mouseExited(MouseEvent e) {
setText(false)
}
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(
new java.net.URI(LinkLabel2.this.url))
} catch (Exception ex) {
}
}
})
}
private void setText(boolean b) {
if (!b)
setText("<html><font color=blue><u>" + text)
else
setText("<html><font color=red><u>" + text)
}
}
主要有这么几个页面:1.注册2.登陆
3.房间选择和聊天页面
。用户先到1页面注册账号,然后到2登陆聊天室,再到3页面加入一个已经创建的房间,开始聊天。具体做就麻烦了,我以前做这个玩意花了2天。有个技术难点要克服,a在他的聊天页面上说了一句话,b的聊天页面必须立刻把这句话显示出来。可以这么做,a说话了,他点了提交按钮,那么一个请求被提交到后台的servlet或者action,后台知道a说了一句话,于是,把全局变量(例如application里)messagearrived的值设置为true,聊天页面有段javascript代码,每隔一小段时间(如0.2秒)检查messagearrived的值,发现messagearrived==true,就刷新页面(页面刷新时,a说的话就显示出来了),然后再把messagearrived设回false。这样聊天记录能实时地显示。因为每个人说话,都会导致整个页面刷新,所以这个聊天室给人的感觉是,页面一卡一卡的,不正常。ajax用上以后,不会有整个页面老刷新的现象了,给用户的感觉很好。
1.随便在一个文件夹包上右击新建TestLink类,勾选main方法程序,并初始化导入包、继承JFrame窗体等。2.在main方法中,首先实例化TestLink类,以便测试随时使用。
3.在此类的构造方法(没有如何参数)中,初始化Java窗体,设置窗体的各项属性,用户可适当增加其他属性。
4.运行此类,查看基本的Java窗体是否实现。
5.在构造方法中实例化JLabel类,双引号内的文字为窗体上显示的文字,必须被final修饰,然后添加此类的鼠标监听事件,最后加上“this.add(mBlogSina)”将标签加入到窗体中。
6.运行程序后,如下图所示,JLabel被加入到窗体中。
7.在鼠标监听事件中添加匿名类MouseadAdapter的三个方法。
8.创建如图的URI对象(双引号内为点击链接到的网址),并创建Desktop类,此时发现程序出错,点击“X”添加异常处理并将声明的Desktop类移到声明的uri下方。
9.输入下图if语句执行判断,并输入“dptdtp.browse(uri)”(执行链接 *** 作的方法)时发现重新报错,则执行类似第8步的异常处理。
10.直至此步,运行程序,点击JLabel标签就会自动打开系统默认浏览器转到用户设置的指定网址。
11.下一步在其他两个方法内输入以下语句,实现鼠标移出、移入链接的效果。具体的实现代码,你必须亲自去做。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)