import java.awt.*; import java.awt.event.*; import java.net.*; import java.util.*; import java.mail.*; import java.mail.internet.*; import javax.swing.*; import javax.swing.event.*;//The E-mail Client. public class EmailClient extends JFrame{ //Message table's data model. private MessagesTableModel tableModel;
//Table listing messages. private JTable table; //This is the text area for displaying messages. private JTextArea messageTextArea; //This is the split panel that holds the messages table and the message view panel. private JSplitPane splitPane; //These are the buttons for managing the selected message. private JButton replyButton,forwardButton,deleteButton; //Currently selected message in table. private Message selectedMessage; //Flag for whether or not a message is being deleted. private boolean deleting; //This is the JavaMail session. private Session session; //Constructor for E-mail Client. public EmailClient(){ //Set application title. setTitle("E-mail Client"); //Set window size. setSize(640,480); //Handle window closing events. addWindowListener(new WindowAdapter(){ public void WindowClosing(WindowEvent e){ actionExit(); } }); //Set up file menu. JMenuBar menuBar =new JMenuBar(); JMenu fileMenu=new JMenu("File"); fileMenu.setMnemonic(KeyEvent.VK_F); JMenuItem fileExitMenuItem=new JMenuItem("Exit",KeyEvent.VK_X); fileExitMenuItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ actionExit(); } }); fileMenu.add(fileExitMenuItem); menuBar.add(fileMenu); setJMenuBar(menuBar); //Set up buttons panel. JPanel buttonPanel=new JPanel(); JButton newButton=new JButton("New Message"); newButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ actionNew(); } }); buttonPanel.add(newButton);
//Set up messages table. tableModel=new MessagesTableModel(); table=new JTable(tableModel); table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ tableSelectionChanged(); } }); //Allow only one row at a time to be selected. table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//Set up E-mails panel. JPanel emailsPanel=new JPanel(); emailsPanel.setBorder(BorderFactory.createTitledBorder("E-mails")); messageTextArea=new JTextArea(); messageTextArea.setEdidtable(false); splitPane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(table),new JScrollPane(messageTextArea)); emailsPanel.setLayout(new BorderLayout()); emailsPanel.add(splitPane,BorderLayout.CENTER); //Set up buttons panel 2. JPanel buttonPanel2=new JPanel(); replyButton=new JButton("Reply"); replyButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ actionReply(); } }); replyButton.setEnabled(false); buttonPanel2.add(replyButton); forwardButton=new JButton("Forward"); forwardButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ actionForward(); } }); forwardButton.setEnabled(false); buttonPanel2.add(forwardButton); deleteButton=new JButton("Delete"); deleteButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ actionDelete(); } }); deleteButton.setEnabled(false); buttonPanel2.add(deleteButton); //Add panels to display. getContentPane().setLayout(new BorderLayout()); getContentPane().add(buttonPanel,BorderLayout.NORTH); getContentPane().add(emailsPanel,BorderLayout.CENTER); getContentPane().add(buttonPanel2,BorderLayout.SOUTH); } //exit this program. private void actionExit(){ System.exit(0); } //Create a new message. private void actionNew(){ sendMessage(MessageDialog.NEW,null); } //Called when table row selection changes. private void tableSelectionChanged(){ //if not in the middle of deleting a message,set the selected message and display it. if(!deleting){ selectedMessage=tableModel.getMessage(table.getSelectedRow()); showSelectedMessage(); updateButtons(); } } //Reply to a message. private void actionReply(){ sendMessage(MessageDialog.REPLY,selectedMessage); } //Forward a message. private void actionForward(){ sendMessage(MessageDialog.FORWARD,selectedMessage); } //Delete the selected message. private void actionDelete(){ deleting=true;
try{ //Delete message form server. selectedMessage.setFlag(Flags.Flag.DELETED,true); Folder folder=selectedMessage.getFolder(); folder.close(true); folder.open(Forder.READ_WRITE); } catch(Exception e){ showError("Unable to delete message." ,false); } //Delete message form table. tableModel.deleteMessage(table.getSelectedRow()); //Update GUI. messageTextArea.setText(""); deleting=false; selectMessage=null; updateButtons(); } //Send the specified message. private void sendMessage(int type,Message message){ //Display message dialog box to get message values. MessageDialog dialog; try{ if(!dialog.display()){ //Return if dialog box was cancelled. return; } }catch(Exception e){ showError("Unable to send message.",false); return; }
try{ //Create a new message with values form dialog box. Message newMessage=new MimeMessage(session); newMessage.setFrom(new InternetAddress(dialog.getFrom())); newMessage.setRecipient(Messge.RecipientType.TO,new InternetAddress(dialog.getTo())); newMessage.setSubject(dialog.getSubject()); newMessage.setSendDate(new Date()); newMessage.setText(dialog.getContent()); //Send new message. Transport.send(newMessage); } catch(Exception e){ showError("Unable to send message.",false); } }
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.mail.*;
import java.mail.internet.*;
import javax.swing.*;
import javax.swing.event.*;//The E-mail Client.
public class EmailClient extends JFrame{
//Message table's data model.
private MessagesTableModel tableModel;
//Table listing messages.
private JTable table; //This is the text area for displaying messages.
private JTextArea messageTextArea; //This is the split panel that holds the messages table and the message view panel.
private JSplitPane splitPane; //These are the buttons for managing the selected message.
private JButton replyButton,forwardButton,deleteButton; //Currently selected message in table.
private Message selectedMessage; //Flag for whether or not a message is being deleted.
private boolean deleting; //This is the JavaMail session.
private Session session; //Constructor for E-mail Client.
public EmailClient(){
//Set application title.
setTitle("E-mail Client"); //Set window size.
setSize(640,480); //Handle window closing events.
addWindowListener(new WindowAdapter(){
public void WindowClosing(WindowEvent e){
actionExit();
}
}); //Set up file menu.
JMenuBar menuBar =new JMenuBar();
JMenu fileMenu=new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileExitMenuItem=new JMenuItem("Exit",KeyEvent.VK_X);
fileExitMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionExit();
}
});
fileMenu.add(fileExitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar); //Set up buttons panel.
JPanel buttonPanel=new JPanel();
JButton newButton=new JButton("New Message");
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionNew();
}
});
buttonPanel.add(newButton);
//Set up messages table.
tableModel=new MessagesTableModel();
table=new JTable(tableModel);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
tableSelectionChanged();
}
});
//Allow only one row at a time to be selected.
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JPanel emailsPanel=new JPanel();
emailsPanel.setBorder(BorderFactory.createTitledBorder("E-mails"));
messageTextArea=new JTextArea();
messageTextArea.setEdidtable(false);
splitPane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JScrollPane(table),new JScrollPane(messageTextArea));
emailsPanel.setLayout(new BorderLayout());
emailsPanel.add(splitPane,BorderLayout.CENTER); //Set up buttons panel 2.
JPanel buttonPanel2=new JPanel();
replyButton=new JButton("Reply");
replyButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionReply();
}
});
replyButton.setEnabled(false);
buttonPanel2.add(replyButton);
forwardButton=new JButton("Forward");
forwardButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionForward();
}
});
forwardButton.setEnabled(false);
buttonPanel2.add(forwardButton);
deleteButton=new JButton("Delete");
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionDelete();
}
});
deleteButton.setEnabled(false);
buttonPanel2.add(deleteButton); //Add panels to display.
getContentPane().setLayout(new BorderLayout());
getContentPane().add(buttonPanel,BorderLayout.NORTH);
getContentPane().add(emailsPanel,BorderLayout.CENTER);
getContentPane().add(buttonPanel2,BorderLayout.SOUTH);
} //exit this program.
private void actionExit(){
System.exit(0);
} //Create a new message.
private void actionNew(){
sendMessage(MessageDialog.NEW,null);
} //Called when table row selection changes.
private void tableSelectionChanged(){
//if not in the middle of deleting a message,set the selected message and display it.
if(!deleting){
selectedMessage=tableModel.getMessage(table.getSelectedRow());
showSelectedMessage();
updateButtons();
}
} //Reply to a message.
private void actionReply(){
sendMessage(MessageDialog.REPLY,selectedMessage);
} //Forward a message.
private void actionForward(){
sendMessage(MessageDialog.FORWARD,selectedMessage);
} //Delete the selected message.
private void actionDelete(){
deleting=true;
try{
//Delete message form server.
selectedMessage.setFlag(Flags.Flag.DELETED,true);
Folder folder=selectedMessage.getFolder();
folder.close(true);
folder.open(Forder.READ_WRITE);
} catch(Exception e){
showError("Unable to delete message." ,false);
} //Delete message form table.
tableModel.deleteMessage(table.getSelectedRow()); //Update GUI.
messageTextArea.setText("");
deleting=false;
selectMessage=null;
updateButtons();
} //Send the specified message.
private void sendMessage(int type,Message message){
//Display message dialog box to get message values.
MessageDialog dialog;
try{
if(!dialog.display()){
//Return if dialog box was cancelled.
return;
}
}catch(Exception e){
showError("Unable to send message.",false);
return;
}
try{
//Create a new message with values form dialog box.
Message newMessage=new MimeMessage(session);
newMessage.setFrom(new InternetAddress(dialog.getFrom()));
newMessage.setRecipient(Messge.RecipientType.TO,new InternetAddress(dialog.getTo()));
newMessage.setSubject(dialog.getSubject());
newMessage.setSendDate(new Date());
newMessage.setText(dialog.getContent()); //Send new message.
Transport.send(newMessage);
} catch(Exception e){
showError("Unable to send message.",false);
}
}
import javax.mail.*;
import javax.mail.internet.*;
===
还有再问你一个问题:书上说可以更新classpath环境变量设置。就是不用javac -classpath====这么长了!??