import java.awt.*;
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)武勝免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
import java.awt.event.*;
import javax.swing.*;
import java點(diǎn)虐 .*;
import java.io.*;
public class ClientDemo01 {
public static void main(String[] args){
JFrame f=new JFrame("AA");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextArea ta=new JTextArea(15,30);
ta.setEditable(false); //文本域只讀
JScrollPane sp=new JScrollPane(ta); //滾動(dòng)窗格
JTextField tf=new JTextField(20);
JButton b=new JButton("發(fā)送");
p1.add(sp);
p2.add(tf);
p2.add(b);
f.add(p1,"Center");
f.add(p2,"South");
f.setBounds(300,300,360,300);
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Socket socket=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
socket=new Socket("192.168.0.4",5000);
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread01 mt=new MyThread01(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
}
b.addActionListener(new ButtonActionListener01(tf,ta,bos));
}
}
class ButtonActionListener01 implements ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActionListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText();
if(!message.equals("")){
tf.setText(""); //清空文本框
ta.append("AA:"+message+"\n"); //添加到文本域并換行
try{
bos.write(message.getBytes());
bos.flush();
}catch(Exception ex){
System.out.println("發(fā)送失敗");
}
}
}
}
class MyThread01 extends Thread{
BufferedInputStream bis;
JTextArea ta;
public MyThread01(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
this.ta=ta;
}
public void run(){
try{
while(true){
byte[] b=new byte[100];
int length=bis.read(b);
String message=new String(b,0,length);
ta.append("BB:"+message+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
} import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java點(diǎn)虐 .*;
import java.io.*;
public class ServerDemo01{
public static void main(String[] args){
JFrame f=new JFrame("BB");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextArea ta=new JTextArea(12,30); //文本域,第一個(gè)參數(shù)為行數(shù),第二個(gè)參數(shù)為列數(shù)
ta.setEditable(false); //文本域只讀
JScrollPane sp=new JScrollPane(ta); //滾動(dòng)窗格
JTextField tf=new JTextField(20);
JButton b=new JButton("發(fā)送");
p1.add(sp);
p2.add(tf);
p2.add(b);
f.add(p1,"Center");
f.add(p2,"South");
f.setBounds(300,300,360,300);
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ServerSocket server=null;
Socket socket=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
server=new ServerSocket(5000);
//ta.append("等待AA連接...\n");
socket=server.accept();
//ta.append("AA已連接\n");
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread1 mt=new MyThread1(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
}
b.addActionListener(new ButtonActionListener1(tf,ta,bos));
}
}
class ButtonActionListener1 implements ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText(); //獲取文本框中的內(nèi)容
if(!message.equals("")){
tf.setText(""); //清空文本框
ta.append("BB:"+message+"\n"); //添加到文本域并換行
try{
bos.write(message.getBytes());
bos.flush();
}catch(Exception ex){
System.out.println("發(fā)送失?。?);
}
}
}
}
class MyThread1 extends Thread{
BufferedInputStream bis;
JTextArea ta;
public MyThread1(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
this.ta=ta;
}
public void run(){
try{
while(true){
byte[] b=new byte[100];
int length=bis.read(b);
String message=new String(b,0,length);
ta.append("AA:"+message+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
復(fù)雜的對(duì)話消息框可以參考JDialog
說(shuō)明: JDialog的寫法和JFrame基本類似. 可以自由添加組件等,代碼量偏多.
簡(jiǎn)單的消息對(duì)話框可以使用JOptionPane
說(shuō)明: 功能較少, 可拓展性不強(qiáng),但是代碼非常簡(jiǎn)潔. 適合大多數(shù)的應(yīng)用場(chǎng)景.
效果圖
舉例:
public?class?Demo?{
public?static?void?main(String[]?args)?{
JOptionPane.showMessageDialog(null,?"提示:今天天氣不錯(cuò)喲~");??
JOptionPane.showMessageDialog(null,?"提示:?6/0出錯(cuò),?被除數(shù)不能為0!?",?"警告",JOptionPane.ERROR_MESSAGE);??
}
}
關(guān)于觸發(fā)的舉例
效果圖
參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//該窗口繼承自JFrame.?
public?class?DemoFrame?extends?JFrame?implements?ActionListener{
JTextField?jtf;
JButton?jb;
public?DemoFrame()?{
jtf?=?new?JTextField(8);
jtf.setText("Hello?~");
jb?=?new?JButton("顯示文本框的內(nèi)容");
jb.addActionListener(this);
JPanel?jp?=?new?JPanel();
jp.add(jtf);
jp.add(jb);
add(jp);
setTitle("窗口");//?窗口標(biāo)題
setSize(380,?185);//?窗口大小
setLocationRelativeTo(null);//?窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//?通常添加這行代碼,點(diǎn)擊窗口右下角的關(guān)閉時(shí)會(huì)結(jié)束程序
setVisible(true);
}
//?main方法
public?static?void?main(String[]?args)?{
new?DemoFrame();
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
JButton?jb1?=?(JButton)?e.getSource();
if(jb==jb1)?{
JOptionPane.showMessageDialog(null,?"文本框的內(nèi)容是:"+jtf.getText());
}
}
}
拓展:
更多的關(guān)于JDialog和JOptionPane兩個(gè)組件的使用方法, 可以查看java API文檔
建議經(jīng)常查看java的 API文檔, 網(wǎng)上有很多的中文版. 不熟悉的類和方法,就看看, 是學(xué)習(xí)的利器~
if(true){
out.println("scriptalert('彈出來(lái)了');/script");
}
// 上面這個(gè)是寫在JSP 頁(yè)面上的.
"要求是(若用戶名或密碼為空(包括空格字符)則提示"
你的意思是不是你在做登陸的時(shí)候要求用戶輸入用戶名和密碼? 而且不能為空?
如果是這樣的話,你可以在 提交 按鈕上加一句 onclick ='checkinfo()' .調(diào)用一個(gè) JS來(lái)進(jìn)行判定.
JS可以寫成...
if(document.getElementByID("用戶名").value==null || document.getElementByID("用戶名").value=="")
{
alert("請(qǐng)輸入用戶名");
retrun false ;
}else if(document.getElementByID("密碼").value==null || document.getElementByID("密碼").value=="")
{
alert("請(qǐng)輸入密碼");
retrun false ;
}else {
return true ;
}
這樣的話,在你點(diǎn)提交的時(shí)候,會(huì)先進(jìn)行JS的驗(yàn)證, 如果有其中一項(xiàng)沒(méi)有填寫則回彈出對(duì)應(yīng)的提示框,并返回false.表單提交不了.......否則返回一個(gè)真值, 這個(gè)時(shí)候你的 表單就能順利提交了....