codice:
package chatApplet;
import chatApplet.ClientChat.*;
import java.awt.*;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.JLabel;
public class PrivateChat extends JFrame {
private static final long serialVersionUID=8L; //L sta per LONG
private JLabel destinatario;
private JLabel mittente;
private List fontNameBox;
private List fontStyleBox;
private List fontSizeBox;
private DefaultListModel listModel;
private JButton buttonPvt;
private JButton disconnetti;
private JScrollPane jScrollPane1;
private JScrollPane jScrollPane2;
private JScrollPane jScrollPane3;
public JTextArea viewmsg;//text area dove appare il messaggio inviato
public JTextArea messaggio; //text area dove inserire il messaggio da inviare
public Font font;
private String resultName; //varivabile con il font cambiato
private Integer resultSize; //variabile con la grandezza cambiata
public String nickname;
private JList lstUsers;
private JPanel jPanel1;
public ClientChat n_client;
public chatApplet.Applet chat;
public boolean isClientConnected;
public PrivateChat() throws IOException
{
listModel = new DefaultListModel();
lstUsers=new JList(listModel);
jPanel1=new JPanel();
viewmsg = new JTextArea();
viewmsg.setColumns(20);
viewmsg.setRows(5);
viewmsg.setEnabled(false);
messaggio=new JTextArea("");
messaggio.setEditable(true);
jScrollPane1 = new JScrollPane();
jScrollPane1.setViewportView(messaggio);
jScrollPane2 = new JScrollPane();
jScrollPane2.setViewportView(viewmsg);
jScrollPane3=new JScrollPane();
jScrollPane3.setViewportView(lstUsers);
buttonPvt = new JButton();
buttonPvt.setText("Send");
buttonPvt.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
invio_actionPerformed(e);
}
});
disconnetti= new JButton();
disconnetti.setText("Go out");
disconnetti.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
disconnetti_actionPerformed(e);
} catch (IOException ex) {
Logger.getLogger(PrivateChat.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
fontNameBox = new List();
fontNameBox = new List(4);
String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for ( int i = 0; i < fonts.length; i++)
fontNameBox.add(fonts[i]);
fontNameBox.select(0);
fontSizeBox = new List();
fontSizeBox = new List(4);
for ( int i = 10; i < 40; i++)
fontSizeBox.add(String.valueOf(i));
fontSizeBox.select(0);
fontStyleBox = new List();
fontStyleBox = new List(4);
fontStyleBox.add("Normal");
fontStyleBox.add("Bold");
fontStyleBox.add("Italic");
fontStyleBox.select(0);
ActionListener eventForwarder = new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font ft;
ft=FontChose();
messaggio.setFont(ft);
}
};
fontNameBox.addActionListener(eventForwarder);
fontSizeBox.addActionListener(eventForwarder);
fontStyleBox.addActionListener(eventForwarder);
destinatario = new JLabel();
destinatario.setForeground(new java.awt.Color(255, 255, 255));
destinatario.setText("Destinatario");
mittente = new JLabel();
mittente.setForeground(new java.awt.Color(255, 255, 255));
mittente.setText("Mittente");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(fontNameBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(6, 6, 6)
.addComponent(fontSizeBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(6, 6, 6)
.addComponent(fontStyleBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(mittente)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(10, 10, 10)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(disconnetti, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonPvt)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(420, Short.MAX_VALUE)
.addComponent(destinatario)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(destinatario)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(fontNameBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(fontSizeBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(fontStyleBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(8, 8, 8)
.addComponent(mittente)
.addGap(6, 6, 6)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(disconnetti)
.addGap(27, 27, 27)
.addComponent(buttonPvt)))
.addContainerGap(22, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
jPanel1.setBackground(new Color(255, 153, 0));
jPanel1.setFont(new Font("Serif", 0, 14));
jPanel1.setForeground(new Color(51, 51, 255));
this.setTitle("Chat Privata Chespettacolo");
this.setLocation(200, 100);
this.setVisible(true);
this.setResizable(false);
}
PrivateChat(ClientChat client, String text, Applet app) {
n_client=client;
nickname=text;
chat=app;
}
public Font FontChose(){
Font ft;
int style;
resultName =fontNameBox.getSelectedItem();
resultSize=(Integer.valueOf(fontSizeBox.getSelectedItem()));
if(fontStyleBox.getSelectedItem().equals("Italic"))
style = Font.ITALIC;
else if(fontStyleBox.getSelectedItem().equals("Bold"))
style = Font.BOLD;
else style=Font.PLAIN;
ft = new Font(resultName,style ,resultSize);
return ft;
}
public Font getSelectFont(){
return font;
}
public void invio_actionPerformed(ActionEvent e)
{
// Se non e' stato inserito alcun messaggio, nulla da fare
if (messaggio.equals(""))
{
JOptionPane.showMessageDialog(null, "Messaggio vuoto", "alert",
JOptionPane.CANCEL_OPTION);
}
try
{
n_client.inviaPVT(this.nickname + ": "
+ (messaggio.getText()));
messaggio.setText("");
}
catch (Exception ex)
{
}
}
/**
*
* @param e
* @throws IOException
*/
public void disconnetti_actionPerformed(ActionEvent e) throws IOException
{
int n =JOptionPane.showConfirmDialog(null," Vuoi abbandonare la chat? " ,
"Chiusura chat privata", JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
{
n_client.inviaPVT("^" + this.nickname.toString());
isClientConnected = false;
listModel.removeAllElements() ;
n_client.closePVT();
//System.exit(0);
System.out.println("l'utente ha abbandonato la chat");
setVisible(false);
}
}