From 690bbba9550e2644e48db44fb94d4df86494a34e Mon Sep 17 00:00:00 2001 From: O'Shea Date: Mon, 7 Dec 2020 19:36:36 -0500 Subject: [PATCH] working v2.0, attempt at GUI --- bin/javaChat/ChatClient$1.class | Bin 1293 -> 1293 bytes bin/javaChat/ChatClient$2.class | Bin 1147 -> 1147 bytes bin/javaChat/ChatClient.class | Bin 2023 -> 2023 bytes bin/javaChat/ClientGUI$1.class | Bin 0 -> 1289 bytes bin/javaChat/ClientGUI$2.class | Bin 0 -> 1143 bytes bin/javaChat/ClientGUI.class | Bin 0 -> 2163 bytes bin/javaChat/UserInterface$1.class | Bin 0 -> 751 bytes bin/javaChat/UserInterface$2.class | Bin 0 -> 788 bytes bin/javaChat/UserInterface$3.class | Bin 0 -> 788 bytes bin/javaChat/UserInterface$4.class | Bin 0 -> 788 bytes bin/javaChat/UserInterface$5.class | Bin 0 -> 788 bytes bin/javaChat/UserInterface$6.class | Bin 0 -> 568 bytes bin/javaChat/UserInterface.class | Bin 0 -> 9389 bytes bin/module-info.class | Bin 171 -> 195 bytes src/javaChat/ChatClient.java | 4 + src/javaChat/ClientGUI.java | 97 ++++++++++ src/javaChat/UserInterface.java | 288 +++++++++++++++++++++++++++++ src/module-info.java | 3 +- 18 files changed, 391 insertions(+), 1 deletion(-) create mode 100644 bin/javaChat/ClientGUI$1.class create mode 100644 bin/javaChat/ClientGUI$2.class create mode 100644 bin/javaChat/ClientGUI.class create mode 100644 bin/javaChat/UserInterface$1.class create mode 100644 bin/javaChat/UserInterface$2.class create mode 100644 bin/javaChat/UserInterface$3.class create mode 100644 bin/javaChat/UserInterface$4.class create mode 100644 bin/javaChat/UserInterface$5.class create mode 100644 bin/javaChat/UserInterface$6.class create mode 100644 bin/javaChat/UserInterface.class create mode 100644 src/javaChat/ClientGUI.java create mode 100644 src/javaChat/UserInterface.java diff --git a/bin/javaChat/ChatClient$1.class b/bin/javaChat/ChatClient$1.class index 48518d460af0fa935789e27ee185d95938f47279..63f587aa5a2ece2dc76771f8d7f522aa753df2bc 100644 GIT binary patch delta 47 zcmeC>>gC!X&BCZNS%#%l){udN!HhwG!JI*Y!Gb}W!ID9S!J0vV!G=MF!D#Y2mUsZY C_6K(W delta 47 zcmeC>>gC!X&BCZLS%#%lR+oW;!H7YC!I(jU!GuAY!IVLU!JI*X!Gb}BL2vRpmUsZV C`Ug`0 diff --git a/bin/javaChat/ChatClient$2.class b/bin/javaChat/ChatClient$2.class index b29261b2356bd2750e7f62f7e8c2bcd23f2ade40..03c4556fd386204d5d1dbbf2b5cb3e429a30f449 100644 GIT binary patch delta 43 zcmey(@tb4A1ZGC($rG82Bz+k;82lI{8T=V!7y=k%8G;xT8G;#989XP;u*3rZ_e}{J delta 43 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 X-{4!$-CV74R=;#G;XBSv{(1U;Aix$J literal 0 HcmV?d00001 diff --git a/bin/javaChat/UserInterface$1.class b/bin/javaChat/UserInterface$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1eb0b93541a08a8b8eaa87c6bd821495492acd80 GIT binary patch literal 751 zcmZ`%T~8B16g|_grRxeSLW>mfs}Fo6)+RofV2rTAKvIZ_+V^35p^MuYvOBG>{v{H? z#0P!=KgxJ#*l09mleu&6?AdegIkPvveqIB3gSLl~z|yIl$Y>}{=Sxo6zA}^@%b40- z4;6uyecO@WOot|J+_ z>JYdWpo*H0GVTZPFe^}Avw*o?qUdluI-=~eJW5GmzNcfE_GOmXx;U)Zkp!0S=+*A> zNZ|pQp&opcnH&)dVSF&M!lE>ZztTWp^>)_(h3{Gqw$}STnt0@4NuV)ZcYtLq3M`!N zjE&K%>umeOUZ#m*Kir7ZTL}1{^f-&@L*kVFb2Tq*Pc~#%#i`B{b#f~wz%%RCthGDR zqcg2|SSxK`DaxW$<~eaWb4a<_)49P@cDu}ff(S!vIcFta9%gv2bM~5dd*W|wUUK+> z;M`&6IM(=E;5|Z)fy;e7z&uwEc~u3f-$OoLz+yqRU69o`F5quoq4Af?cU^Y4Z{+wI quC5n+;8|K&VX}g`#SJQW%&~-3JaJW%#XRTCXP6z#J}-Ec(EJTU4W+sO literal 0 HcmV?d00001 diff --git a/bin/javaChat/UserInterface$2.class b/bin/javaChat/UserInterface$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e082f5f913171bfc0abadc19c06c6f49a2dc0ea0 GIT binary patch literal 788 zcmZ`%U2oGs5S&ZWxHhIWrKC+uX(<7Y? zjvdql0{b>hrMd{u2V;tjgSx<;t$q&mr-bV?C1pZpP!|*>+K{4Lpl(KqZarfDXnune z#ym?@Vx9|ZA1neL_62I4Y)CEyuKRGX?4gQPA1(rc>VXBUMv0=c%gKQ9cXE)Dz*>~W zGVRMev3XgnSxEw03wpJVSyJ$Z%qSbamARY{Tful=8);}Z-%wzGrgh%*r`Cy+!@h?m zwjFErbb}5kh!>xfY-||^O#;H#l%-`@1gC>#+<4+ z%{1TAY%Cx5tZOUQ_D(kWm?;))N9-!Tv`#9uCQg^nNSjxgHrQj=s~k%ZL14}2AE(0M z!sGoKpPuk;D_;BPJN))ftb8pnH+Ze{mp~V5y!yr2!%eJnc8g<4!1)qzxq*$6>_tiD zw!gtY`hm^=T(%$ZniWI^U!%y~lFusI!5t;Eyui*=}M;+D-1v+`DJbJ@?H1`TOfPfEUqzNxIWv9we_EARE zIC4-C2<+Q1k?JaZ-y2e798?9iZS`}gKgC?9F)0%=gSw)2tPLs31gd5b>&8>&Z%=P< z%$S$4ip?v5jlEf*{jNZzmG;Snz+E2><~@|L=)*-IP~NkE#dfUd>}J%X>_YYu5?E@d zkxaTWi)~&MD^`-g`ix$UBbF4rBQr?*=Q5KcVk;Q$Yar}B|JL0M0OKT-kYvOeNjI?>1YJ+Wdz05HO5d_wJ{&7ki zEN@F4wSHki9O* z+~zm<2S2d(pUd_GE?B{3&R5HGx8SpiHt~?j3g%4)SFpuviHCTUXLanL!6%PlR+xRB IaFkI02bTx2ga7~l literal 0 HcmV?d00001 diff --git a/bin/javaChat/UserInterface$4.class b/bin/javaChat/UserInterface$4.class new file mode 100644 index 0000000000000000000000000000000000000000..af911d4b02285879e7955eb1c0e579c1116c3159 GIT binary patch literal 788 zcmZ`%U279T6g`uq+3vcw+Yi&GwYIjgv?;iPc@Qdsgo=e&g=k(xVY0b48#c4DGmSp_ zmjpk+2Y-M+O1!gKkV3L>XXf5Ld+xbs_Rrs6zX3eLp@WjZ=15Ltdnir#MpJgK3}qi= zM2(h%ia=oBhKW>{;miJrBIBScuxG2EL;We{I!#EKkQvk^bz*HuQ6^9|!&o;SFn?!u zgHy&lj#X@)2y7qC10DASD(!SYE(C7+aIom1jAb7#0)g_81uS=BMHg4&K4q_EKOuqD zP8!LiC$re*MX_Qf32e>j)o8J#;02jsI(Q{BIVQG(@xC_F&~(0m!2VS0tm)6J6Q{>L z4|Qxi*b=DCp54c7YzVB6x=B2s>|ys>hcZo!z-}&cej5R=n_guRJ&W^+uif5#+n0?w zQ&Ey?zNP6{J`SvFOV;*wI{ug{7Hmg6SA1#hL~2c(E?$r}&r@x%$F7$-79fJan$JH@ ziNl4*`wc#|c()a=dGZ~8^Cy;tNbPK7OTAa`Psu7);YVyu^`}l3AkLtMnU$p zAak4F;Gg`!=6^2R4|vB4-sgO^Ja-E|t7r#zn5Yzyq0)~yLnc}J{o-T7-ogp J=N?B1^?#{Bv7!I~ literal 0 HcmV?d00001 diff --git a/bin/javaChat/UserInterface$5.class b/bin/javaChat/UserInterface$5.class new file mode 100644 index 0000000000000000000000000000000000000000..bfcb669c44229f74a5139fd6208ff616dd2be21d GIT binary patch literal 788 zcmZ`%U279T6g`uq+3vcwYprS1T3c(BHU-y*7KDl*p<*FcAvN!l-P>ftW>$8l(MSK1 z;0O5N5Aa8ccQy-BNEYtQ+`DJbJ@?H1`TOfPfaiGPpdzq2mQ&doNfUn1l%Fd@`IU^Q zb>g5V5ZJe2D%CK2HyBf79MlE&Z1r=fKP6nJDJc^&gBnsd(S{V|0(CP=bn6-Ocjq@a zWz362CFZ5T_Q4|1VPBxu$zpOLaNCE2We-)X`fw2lR1Yj*wVNoqxSk9szm$WN1lGD) zB-6gk6PuUCnw2E5wV+q)ge3)U$&9l2z0Bo=*b2t`+DJpQ`C@_nnbvvJpIIkP5BnaP z*mkfb(3n5FkNemVSReP&B&PhhccVjxfY-~e^N3z2#l$ym@2Ty}#+<1r z%{1TAY%Cv-tZOUQ_D(kWm?;))M?6=2X`NJRO`I-YkT!2JZLr6#S2>m-g20;3KTd_i zg~$6XJ{|LJD_;BPJN))ftb8pncX+Mymq3g)Uj5?i;V#xWyT`F4;Cu-Z#Zpt@W#5H9^{Kx~bz3;+dn77$-$W^<1 z+3JeGxJWbPCef>&QoI!khV+qC(i}4+OFK;lry4y74@qQvxR_#?t4k#=dQUA8UynL+ z^(f$BlgHBfpi@v@lJn<&daTy0Zkm zM%0S~aVjnO+^^;LEG#iTQ9&4KsoLklbfO0z>)4>pp14#ryL3O~IJ!>5#8g+Yz{v6%MT IB1s_o1xgcflmGw# literal 0 HcmV?d00001 diff --git a/bin/javaChat/UserInterface.class b/bin/javaChat/UserInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..3487c2faff704a85be1d582900a6d8ad71ed420e GIT binary patch literal 9389 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 O0MlGxlBWSoK?nf8jtuz# delta 51 ucmX@ixSEmc)W2Q(7#J8V74*~G*<(df)D^aiU<7w diff --git a/src/javaChat/ChatClient.java b/src/javaChat/ChatClient.java index a342832..9560b49 100644 --- a/src/javaChat/ChatClient.java +++ b/src/javaChat/ChatClient.java @@ -1,6 +1,9 @@ package javaChat; import java.net.* ; + +import javax.swing.JFrame ; + import java.io.* ; public class ChatClient @@ -14,6 +17,7 @@ public class ChatClient */ public static void main( String[] args ) throws IOException { + // Get server IP BufferedReader keyboard = new BufferedReader( new InputStreamReader( System.in ) ) ; System.out.print( "\nPlease enter the IP of the desired server: " ); // GUI: IP BOX diff --git a/src/javaChat/ClientGUI.java b/src/javaChat/ClientGUI.java new file mode 100644 index 0000000..3b98486 --- /dev/null +++ b/src/javaChat/ClientGUI.java @@ -0,0 +1,97 @@ +package javaChat; + +import java.net.* ; +import java.io.* ; + +/** + * + * + * @author osheas1 + * @version 1.0.0 2020-12-07 Initial implementation + * + */ +public class ClientGUI + { + + public static void main( String[] args ) throws IOException + { + + UserInterface login = new UserInterface() ; + login.setVisible( true ); + + boolean done = false ; + while( !done ) + { + done = login.isDone() ; + System.out.print(""); + } + + String ip = login.getIP() ; + String username = login.getUsername() ; + + // Open your connection to a server, at port 6789 + Socket socket = new Socket( ip , 6789 ) ; + + // Create communication streams + DataInputStream dataStreamIn = new DataInputStream( socket.getInputStream() ) ; + DataOutputStream dataStreamOut = new DataOutputStream( socket.getOutputStream() ) ; + + BufferedReader keyboard = new BufferedReader( new InputStreamReader( System.in ) ) ; + + dataStreamOut.writeUTF( username ) ; + + // Thread for sending messages + Thread sendMessage = new Thread(new Runnable() + { + @Override + public void run() + { + System.out.print( "\n-= Type /help for a list of commands =-" ) ; + while( true ) + { + try + { + String messageOut = keyboard.readLine() ; + dataStreamOut.writeUTF( messageOut ) ; + } + catch( IOException x ) + { + x.printStackTrace() ; + System.exit( 0 ) ; + } + } + } + }) ; + + // Thread for receiving messages + Thread receiveMessage = new Thread( new Runnable() + { + + @Override + public void run() + { + while( true ) + { + try + { + String messageIn = dataStreamIn.readUTF() ; + System.out.printf( "%n%s\n", messageIn ) ; + } + catch( IOException x ) + { + x.printStackTrace() ; + System.exit( 0 ) ; + } + } + } + }); + + // Begin threads + sendMessage.start() ; + receiveMessage.start() ; + + + } + + } + // end class ClientGUI \ No newline at end of file diff --git a/src/javaChat/UserInterface.java b/src/javaChat/UserInterface.java new file mode 100644 index 0000000..1d8f906 --- /dev/null +++ b/src/javaChat/UserInterface.java @@ -0,0 +1,288 @@ +package javaChat; + +import java.awt.* ; +import java.util.* ; +import javax.swing.* ; + +public class UserInterface extends javax.swing.JFrame { + + + String ip ; + String username ; + boolean done ; + +/** + * Creates new form loginFrame + */ +public UserInterface() { + initComponents(); +} + +/** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ +@SuppressWarnings("unchecked") +// +private void initComponents() + { + + jTextField1 = new javax.swing.JTextField(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jTextField2 = new javax.swing.JTextField(); + jButton1 = new javax.swing.JButton(); + jSlider1 = new javax.swing.JSlider(); + jSlider2 = new javax.swing.JSlider(); + jSlider3 = new javax.swing.JSlider(); + jSlider4 = new javax.swing.JSlider(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle("Java Chat"); + setAlwaysOnTop(true); + setBackground(new java.awt.Color(255, 255, 255)); + setForeground(java.awt.Color.white); + setResizable(false); + + jTextField1.setEditable(false); + jTextField1.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextField1.setText("0.0.0.0"); + + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setText("Enter Server's I.P. Address:"); + + jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel2.setText("Enter your desired username:"); + + jTextField2.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextField2.setActionCommand(""); + + jButton1.setText("Connect"); + jButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); + jButton1.setOpaque(false); + jButton1.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jButton1MouseClicked(evt); + } + }); + + jSlider1.setMaximum(999); + jSlider1.setOrientation(javax.swing.JSlider.VERTICAL); + jSlider1.setValue(0); + jSlider1.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jSlider1StateChanged(evt); + } + }); + + jSlider2.setMaximum(999); + jSlider2.setOrientation(javax.swing.JSlider.VERTICAL); + jSlider2.setValue(0); + jSlider2.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jSlider2StateChanged(evt); + } + }); + + jSlider3.setMaximum(999); + jSlider3.setOrientation(javax.swing.JSlider.VERTICAL); + jSlider3.setValue(0); + jSlider3.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jSlider3StateChanged(evt); + } + }); + + jSlider4.setMaximum(999); + jSlider4.setOrientation(javax.swing.JSlider.VERTICAL); + jSlider4.setValue(0); + jSlider4.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jSlider4StateChanged(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(60, 60, 60) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(layout.createSequentialGroup() + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(18, 18, 18) + .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addGroup(layout.createSequentialGroup() + .addGap(162, 162, 162) + .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 60, Short.MAX_VALUE) + .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(56, 56, 56)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(24, 24, 24) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jSlider4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(40, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addGap(36, 36, 36) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel2)) + .addGap(28, 28, 28) + .addComponent(jButton1) + .addGap(30, 30, 30)))) + ); + + pack(); + }// + +private void jButton1MouseClicked(java.awt.event.MouseEvent evt) + { + ip = jTextField1.getText() ; + username = jTextField2.getText() ; + //System.out.printf( "IP: %s \nUsername: %s\n", ip, username ) ; + + + done = true ; + setVisible( false ) ; + dispose() ; + + } + +private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) + { + Integer a = jSlider1.getValue() ; + Integer b = jSlider2.getValue() ; + Integer c = jSlider3.getValue() ; + Integer d = jSlider4.getValue() ; + + String ip = String.format("%s.%s.%s.%s", a, b, c, d) ; + + jTextField1.setText( ip.toString() ) ; + } + +private void jSlider2StateChanged(javax.swing.event.ChangeEvent evt) + { + Integer a = jSlider1.getValue() ; + Integer b = jSlider2.getValue() ; + Integer c = jSlider3.getValue() ; + Integer d = jSlider4.getValue() ; + + String ip = String.format("%s.%s.%s.%s", a, b, c, d) ; + + jTextField1.setText( ip.toString() ) ; + } + +private void jSlider3StateChanged(javax.swing.event.ChangeEvent evt) + { + Integer a = jSlider1.getValue() ; + Integer b = jSlider2.getValue() ; + Integer c = jSlider3.getValue() ; + Integer d = jSlider4.getValue() ; + + String ip = String.format("%s.%s.%s.%s", a, b, c, d) ; + + jTextField1.setText( ip.toString() ) ; + } + +private void jSlider4StateChanged(javax.swing.event.ChangeEvent evt) + { + Integer a = jSlider1.getValue() ; + Integer b = jSlider2.getValue() ; + Integer c = jSlider3.getValue() ; + Integer d = jSlider4.getValue() ; + + String ip = String.format("%s.%s.%s.%s", a, b, c, d) ; + + jTextField1.setText( ip.toString() ) ; + } + +/** + * @param args the command line arguments + */ +public static void main(String args[]) { + /* Set the Nimbus look and feel */ + // + /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. + * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); + } + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new UserInterface().setVisible(true); + } + }); +} + + +public String getIP() + { + return ip ; + } + +public String getUsername() + { + return username ; + } + +public boolean isDone() + { + return done ; + } + +// Variables declaration - do not modify +private javax.swing.JButton jButton1; +private javax.swing.JLabel jLabel1; +private javax.swing.JLabel jLabel2; +private javax.swing.JSlider jSlider1; +private javax.swing.JSlider jSlider2; +private javax.swing.JSlider jSlider3; +private javax.swing.JSlider jSlider4; +private javax.swing.JTextField jTextField1; +private javax.swing.JTextField jTextField2; +// End of variables declaration +} diff --git a/src/module-info.java b/src/module-info.java index 2d8c047..8a62a02 100644 --- a/src/module-info.java +++ b/src/module-info.java @@ -7,4 +7,5 @@ */ module javaChat { - requires java.desktop;} \ No newline at end of file + requires java.desktop; + requires java.logging;} \ No newline at end of file