JAVA消息框中如何加入超链接地址

JAVA消息框中如何加入超链接地址,第1张

import java.awt.event.*

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.下一步在其他两个方法内输入以下语句,实现鼠标移出、移入链接的效果。具体的实现代码,你必须亲自去做。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11568858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存