Contoh -contoh dalam artikel ini berbagi kode ruang obrolan java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Terutama terlibat dalam pengetahuan
・ Menulis program GUI di Java, termasuk mekanisme mendengarkan acara.
・ Pemrograman Komunikasi Jaringan Java, ServerSocket, dan Kelas Soket digunakan.
・ Pemrograman multi-thread, kelas utas, dan penggunaan antarmuka runnable di Java.
Kode Sumber
Klien
Paket Proyek1; impor java.awt.*; impor java.awt.event.*; impor java.io.*; impor java.net.*; impor javax.swing.*; klien kelas publik {private jframe clientframe; Private Jlabel Iplabel; Private Jlabel Portlabel; Private Jlabel Sayslabel; Private Jlabel Nicknamelabel; Private JTextfield Iptext; Private JTextField PortText; Private JTextfield NickNametext; Private JTextfield SayStext; Private Jbutton ConnectButton; Private Jbutton NicknameButton; Private Jbutton Saybutton; Private Jpanel Jpanelnorth; Private Jpanel Jpanelsouth0; pribadi jpanel jpanelsouth1; Private Jpanel Jpanelsouth2; Private JTextArea ClientTextArea; scroller jscrollpane pribadi; Pembaca Private Bufferederer; penulis printwriter pribadi; nama panggilan string pribadi; public static void main (string args []) {client aclient = new client (); aclient.startup (); } // inisialisasi klien publik komponen () {nickName = "client"; clientframe = jframe baru (); jpanelnorth = jpanel baru (); IPlabel = jLabel baru ("server ip", jlabel.left); Iptext = JTextField baru (10); Portlabel = jlabel baru ("port server", jlabel.left); PortText = JTextField baru (10); ConnectButton = jbutton baru ("koneksi"); clienttextArea = new jTextAreA (); scroller = jscrollpane baru (clientTextArea); jpanelsouth0 = jpanel baru (); jpanelsouth1 = jpanel baru (); jpanelsouth2 = jpanel baru (); nicknamelabel = new jlabel ("julukan", jlabel.left); nicknametext = JTextField baru (Nickname, 30); nicknameButton = jbutton baru ("konfirmasi"); Saylabel = JLabel baru ("pesan", jlabel.left); SayText = JTextField baru (30); SayButton = JButton baru ("konfirmasi"); } // Bangun GUI Private Void BuildGUI () {// Pengaturan Window ClientFrame.Settitle ("Client"); clientframe.setDefaultCloseOperation (jframe.exit_on_close); clientframe.setsize (550, 550); // komponen jpanelnorth.add (iPlabel); jpanelnorth.add (iptext); jpanelnorth.add (portlabel); jpanelnorth.add (porttext); jpanelnorth.add (ConnectButton); clientframe.getContentPane (). Tambah (borderlayout.north, jpanelnorth); // komponen menengah klienTextArea.setFocusable (false); scroller.setVerticalScrollBarpolicy (scrollpaneconstants.vertical_scrollbar_always); scroller.sethorizontalCrollBarpolicy (scrollpaneconstants.horizontal_scrollbar_never); clientframe.getContentPane (). Tambah (boundlayout.center, scroller); // Komponen Area Selatan jpanelsouth1.add (Nicknamelabel); jpanelsouth1.add (nicknametext); jpanelsouth1.add (nicknameButton); jpanelsouth2.add (Saylabel); jpanelsouth2.add (SayText); jpanelsouth2.add (Saybutton); jpanelsouth0.setlayout (boxlayout baru (jpanelsouth0, boxlayout.y_axis)); jpanelsouth0.add (jpanelsouth1); jpanelsouth0.add (jpanelsouth2); clientframe.getContentPane (). Tambah (borderlayout.south, jpanelsouth0); // atur jendela untuk melihat clientframe.setVisible (true); } // Klien menjalankan public void startup () {buildGUI (); // utas yang menerima pesan server runnable inComingReader = new runnable () {@Override public void run () {string pesan; coba {while ((pesan = reader.readline ())! = null) {clientTextArea.append (pesan + "/n"); }} catch (exception ex) {ex.printstacktrace (); }}}}; // Dengarkan tombol Connect untuk mewujudkan koneksi server ConnectButton.addactionListener (ActionListener baru () {@Override public void actionPerformed (ActionEvent e) {string aserverip = iptext.gettext (); string aserverport = porttext.gettext (); iferpex.gettext (); string aserverport = porttext.gettex JOPTIONPANE.ShowMessagedialog (ClientFrame, "Harap masukkan IP dan port lengkap!"); = BufferedReader (StreamReader); Harap pastikan bahwa input IP dan port benar. ");}}}}}); // dengarkan nama panggilan dan atur julukan ActionListener nicknameListener = new ActionListener () {@Override public void actionPerformed (actionEvent e) {string atext = nickNameText.getText (); if (! atext.equals ("")) {nickName = atext; }}}}; NickNameButton.AddactionListener (Nicknamelistener); nicknametext.addactionListener (nicknamelistener); nickNametext.AddFocusListener (focusListener baru () {@Override public void focusGained (focusEvent e) {} @Override public void focuslost (focusEvent e) {string atext = nicknametext.getText (); if (! atext.equals ("") {nickname = gettext (); if (! atext.equals ("") {nickname = nickname (); if (! atext.equals ("") {nickname = nickname =); ATEXT = ATEXT; // Kirim pesan ke server ActionListener SayListener = new ActionListener () {@Override public void actionPerformed (actionEvent e) {string atext = waytext.getText (); if (atext.equals ("")) {joptionpane.showmessagealog (clientframe, "konten tidak bisa kosong!"); } else {coba {writer.println (nickName + ":" + atext); writer.flush (); } catch (exception ex) {ex.printstacktrace (); } wayText.setText (""); }}}}; Saybutton.addactionListener (SayListener); SayText.AddactionListener (SayListener); }} server
Paket Proyek1; impor java.awt.*; impor java.awt.event.*; impor java.io.*; impor java.net.*; impor java.util.arraylist; impor java.util.iterator; impor javax.swing.*; server kelas publik {private jframe serverframe; Private Jlabel Portlabel; Private Jlabel Sayslabel; Private Jlabel Nicknamelabel; Private JTextField PortText; Private JTextfield SayStext; Private JTextfield NickNametext; Private Jbutton StartButton; Private Jbutton Saybutton; Private Jbutton NicknameButton; Private Jpanel Jpanelnorth; Private Jpanel Jpanelsouth0; pribadi jpanel jpanelsouth1; Private Jpanel Jpanelsouth2; scroller jscrollpane pribadi; Private JTextArea ServertextArea; Private ArrayList <PrintWriter> ClientOutputStreams; nama panggilan string pribadi; public static void main (string [] args) {server aserver = server baru (); aserver.startup (); } // inisialisasi komponen server publik () {nickName = "server"; serverframe = jframe baru (); jpanelnorth = jpanel baru (); portlabel = jlabel baru ("port", jlabel.left); portText = JTextField baru (30); startbutton = jbutton baru ("start"); servertextArea = new jTextAreA (); scroller = jscrollpane baru (servertextArea); nicknamelabel = new jlabel ("julukan", jlabel.left); nicknametext = JTextField baru (Nickname, 30); nicknameButton = jbutton baru ("konfirmasi"); jpanelsouth0 = jpanel baru (); jpanelsouth1 = jpanel baru (); jpanelsouth2 = jpanel baru (); Saylabel = JLabel baru ("pesan", jlabel.left); SayText = JTextField baru (30); SayButton = JButton baru ("konfirmasi"); } // Bangun GUI Private Void BuildGUI () {// Pengaturan Window ServerFrame.Settitle ("Server"); serverframe.setDefaultCloseOperation (jframe.exit_on_close); serverframe.setsize (550, 550); // Komponen Area Utara jpanelnorth.add (Portlabel); jpanelnorth.add (porttext); jpanelnorth.add (startbutton); serverframe.getContentPane (). Tambah (borderlayout.north, jpanelnorth); // komponen menengah servertextarea.setFocusable (false); scroller.setVerticalScrollBarpolicy (scrollpaneconstants.vertical_scrollbar_always); scroller.sethorizontalCrollBarpolicy (scrollpaneconstants.horizontal_scrollbar_never); serverframe.getContentPane (). Tambah (boundlayout.center, scroller); // komponen distrik selatan jpanelsouth1.add (nicknamelabel); jpanelsouth1.add (nicknametext); jpanelsouth1.add (nicknameButton); jpanelsouth2.add (Saylabel); jpanelsouth2.add (SayText); jpanelsouth2.add (Saybutton); jpanelsouth0.setlayout (boxlayout baru (jpanelsouth0, boxlayout.y_axis); jpanelsouth0.add (jpanelsouth1); jpanelsouth0.add (jpanelsouth2); serverframe.getContentPane (). add (borderlayout.south2); serverframe.getcontentPane (). add (borderlayout.south2); serverframe.gancontentPane (). add (borderlayout.south2); serverframe.gancontentPane (). add (borderlayout.south2); serverframe.gancontentpane (). add (borderlayout.south2); serverframe.gancontentPane (). add (borderlayout.south2); serverframe.ganel ServerFrame.setVisible (true); (aport.equals ("")) {joptionpane.showmessagedialog (serverFrame, "Harap masukkan nomor port yang benar!"); ServerSocket (integer.parseint (aport)); servertextArea.append ("Client Connected .../n"); Printwriter writer = printwriter baru (clientocket.getoutputStream ()); clientoutputStreams.add (penulis); Thread t = utas baru (klien baru (clientsocket)); t.start (); }} catch (NumberFormateException | ioException e) {E.PrintStackTrace (); }}}}; Thread serverThread = utas baru (serverRunnable); serverthread.start (); } catch (exception ex) {ex.printstacktrace (); }}}}}; startbutton.addactionListener (startListener); porttext.addactionListener (startListener); // dengarkan nama panggilan dan atur julukan ActionListener nicknameListener = new ActionListener () {@Override public void actionPerformed (actionEvent e) {string atext = nickNameText.getText (); if (! atext.equals ("")) {nickName = atext; }}}; NickNameButton.AddactionListener (Nicknamelistener); nicknametext.addactionListener (nicknamelistener); nickNametext.AddFocusListener (focusListener baru () {@Override public void focusGained (focusEvent e) {} @Override public void focuslost (focusEvent e) {string atext = nicknametext.getText (); if (! atext.equals ("") {nickname = gettext (); if (! atext.equals ("") {nickname = nickname (); if (! atext.equals ("") {nickname = nickname =); ATEXT = ATEXT; // Dengarkan tombol katakan dan kirim pesan ActionListener SayListener = new ActionListener () {@Override public void actionPerformed (actionEvent e) {string atext = wayText.getText (); if (! atext.equals ("")) {atext = nickName + ":" + atext; SendToEveryClient (ATEXT); servertextArea.append (atext + "/n"); SayText.SetText (""); } else {joptionpane.showmessageDialog (serverframe, "konten tidak bisa kosong!"); }}}}; Saybutton.addactionListener (SayListener); SayText.AddactionListener (SayListener); } // Multi-Client Thread Public Class ClientHandler mengimplementasikan runnable {buferedReader breader; Soket Asocket; Public ClientHandler (Socket ClientSocket) {coba {Asocket = ClientSocket; InputStreamReader isReader = inputStreamReader baru (asocket.getInputStream ()); Breader = New BufferedReader (Isreader); } catch (exception ex) {ex.printstacktrace (); }} @Override public void run () {string pesan; coba {while ((pesan = breader.readline ())! = null) {sendToEveryClient (pesan); servertextArea.append (pesan + "/n"); }} catch (exception ex) {ex.printstacktrace (); }}} // Metode untuk mengirim pesan ke semua klien private void sendToEveryClient (string message) {iterator <crintwriter> it = clientoutputStreams.iterator (); while (it.hasnext ()) {coba {printwriter writer = (printwriter) it.next (); writer.println (pesan); writer.flush (); } catch (exception ex) {ex.printstacktrace (); }}}}GUI menjalankan tangkapan layar:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.