我有这个代码,服务器上有两种类型的对象ObjectA
和ObjectB
。我在客户端执行某些操作时将这些数据发送给客户端。在客户端更新这些对象后,我需要将其发送回服务器以反映新值。我尝试从服务器使用相同的ObjectInputStream
和ObjectOutputStream
对象获取多个对象,但它会抛出ClassCastException
来从客户端读取对象。我该怎么办呢。我的代码如下所示。
服务器类
private static class CustomerServer implements Runnable {
private Socket socket;
private int clientNumber;
public CustomerServer(Socket socket, int clientNumber) {
this.socket = socket;
this.clientNumber = clientNumber;
}
@SuppressWarnings("unchecked")
public void run() {
try {
ObjectInputStream oin = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream sOut = new ObjectOutputStream(socket.getOutputStream());
while (true) {
sOut.writeObject(items);
Object s = oin.readObject();
if(s instanceof CustomerAccount){
CustomerAccount cust = (CustomerAccount) s; // logged in customer, received from client login action
cust.accNumber = ++clientNumber;
customers.add(cust);
CustomerAccount delCust = (CustomerAccount)s; //customer who logged out, received from client logout action
//remove logged out customers from logged in customers list
if(customers.contains(delCust)){
customers.remove(delCust);
}
}else if(s instanceof ArrayList<?>){
if(((ArrayList<?>)s).get(0) instanceof ItemsForSale){
items = (ArrayList<ItemsForSale>) s;
}
}
}
} catch (IOException e) {
log("Error handling client# " + clientNumber + ": " + e);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
log("Couldn't close a socket, what's going on?");
}
}
}
客户等级
public static void main(String[] args) throws IOException // main method
{
String serverName = "127.0.0.1"; // server IP address
int port = 4456; // port to get connected to server. This should match
// ServerSocket port in PatilVivekStoreServer
EventQueue.invokeLater(new Runnable() {
public void run() // define run method
{
try // try block
{
System.out.println("Connecting to " + serverName + " on port " + port);
Socket socket = new Socket(serverName, port);
System.out.println("Just connected to " + socket.getRemoteSocketAddress());
oout = new ObjectOutputStream(socket.getOutputStream()); // initialize
// new
// ObjectOutputStream
cIn = new ObjectInputStream(socket.getInputStream());
//dOut = new DataOutputStream(socket.getOutputStream());
//dIn = new DataInputStream(socket.getInputStream());
NewUser frame = new NewUser(); // new customer
// set NewUser frame visible
frame.setVisible(true);
} catch (Exception e) // catch block
{
e.printStackTrace();
}
}
});
}
NewUser Class
public static class NewUser extends JFrame// create class NewUser
{
private JPanel contentPane; // declare variable
private JButton btnSignup;
CustomerAccount customer;
ArrayList<ItemsForSale> items;
/**
* Create the frame.
*
* @throws IOException
*/
public NewUser() throws IOException // create constructor
{
customer = new CustomerAccount();
// set title
setTitle("CLIENT");
// set close operation
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// set bounds of frame
setBounds(10, 100, 1000, 550);
// create object of JPanel
contentPane = new JPanel();
// set contentPane border
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
// set ContentPane with new object
setContentPane(contentPane);
// set contentPane layout is null
contentPane.setLayout(null);
// create text field for user
customer.setEmailAddress(new JTextField());
// set bounds for text fields
customer.getEmailAddress().setBounds(188, 106, 99, 20);
// in contentPane add text field
contentPane.add(customer.getEmailAddress());
// set column for text field
customer.getEmailAddress().setColumns(10);
// create text field for password
customer.setPassword(new JPasswordField());
// set bound for password field
customer.getPassword().setBounds(188, 161, 99, 20);
// add text field on contentPane
contentPane.add(customer.getPassword());
// set column for password text field
customer.getPassword().setColumns(10);
// create text field for password
customer.setCustomerName(new JTextField());
// set bound for password field
customer.getCustomerName().setBounds(188, 51, 99, 20);
// add text field on contentPane
contentPane.add(customer.getCustomerName());
// set column for password text field
customer.getCustomerName().setColumns(10);
// create text field for password
customer.setAddress(new JTextField());
// set bound for password field
customer.getAddress().setBounds(188, 216, 99, 20);
// add text field on contentPane
contentPane.add(customer.getAddress());
// set column for password text field
customer.getAddress().setColumns(10);
// label the text field
JLabel lblUserName = new JLabel("Email Address");
// set bounds for label
lblUserName.setBounds(70, 109, 86, 14);
// add into contentPane
contentPane.add(lblUserName);
// label the text field
JLabel lblPassword = new JLabel("Password");
// set bounds for label
lblPassword.setBounds(70, 164, 86, 14);
// add into contentPane
contentPane.add(lblPassword);
// label the text field
JLabel lblName = new JLabel("Name");
// set bounds for label
lblName.setBounds(70, 54, 86, 14);
// add into contentPane
contentPane.add(lblName);
// label the text field
JLabel lblAddress = new JLabel("Address");
// set bounds for label
lblAddress.setBounds(70, 219, 86, 14);
// add into contentPane
contentPane.add(lblAddress);
// create button signup
btnSignup = new JButton("Register");
JSeparator vSeparator = new JSeparator();
vSeparator.setOrientation(SwingConstants.VERTICAL);
vSeparator.setBounds(333, 16, 2, 307);
contentPane.add(vSeparator);
JLabel lblItem1 = new JLabel(" ");
lblItem1.setBounds(378, 57, 100, 20);
contentPane.add(lblItem1);
JLabel lblItem2 = new JLabel(" ");
lblItem2.setBounds(378, 82, 100, 20);
contentPane.add(lblItem2);
JLabel lblItem3 = new JLabel(" ");
lblItem3.setBounds(378, 109, 100, 20);
contentPane.add(lblItem3);
JLabel lblItem4 = new JLabel(" ");
lblItem4.setBounds(378, 135, 100, 20);
contentPane.add(lblItem4);
JLabel lblItem5 = new JLabel(" ");
lblItem5.setBounds(378, 161, 100, 20);
contentPane.add(lblItem5);
JLabel lblItem6 = new JLabel(" ");
lblItem6.setBounds(378, 186, 100, 20);
contentPane.add(lblItem6);
JLabel lblItem7 = new JLabel(" ");
lblItem7.setBounds(378, 211, 100, 20);
contentPane.add(lblItem7);
JLabel lblItem8 = new JLabel(" ");
lblItem8.setBounds(378, 238, 100, 20);
contentPane.add(lblItem8);
JLabel lblItem9 = new JLabel(" ");
lblItem9.setBounds(378, 264, 100, 20);
contentPane.add(lblItem9);
JLabel lblItem10 = new JLabel(" ");
lblItem10.setBounds(378, 292, 100, 20);
contentPane.add(lblItem10);
// add event handler on SignUp button
btnSignup.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try // try block
{
// declare variables
String username = "";
String pwd = "";
String addr = "";
String name = "";
// get values using getText() method
username = customer.getEmailAddress().getText().trim();
pwd = new String(customer.getPassword().getPassword());
addr = customer.getAddress().getText().trim();
name = customer.getCustomerName().getText().trim();
// check condition if field equals to blank throw error
// message
if (username.equals("") || pwd.equals("")) {
JOptionPane.showMessageDialog(null, " name or password or Role is wrong", "Error",
JOptionPane.ERROR_MESSAGE);
} else // else register customer
{
accountNumber++;
String[] cust = new String[5];
cust[0] = Integer.toString(accountNumber);
cust[1] = name;
cust[2] = username;
cust[3] = pwd;
cust[4] = addr;
customers.add(cust);
System.out.println("In this methid register\n" + customers);
String SMessage = "Record added for " + name;
// create dialog ox which is print message
JOptionPane.showMessageDialog(null, SMessage, "Message", JOptionPane.PLAIN_MESSAGE);
}
} catch (Exception a) // catch block
{
a.printStackTrace();
}
}
});
// set bound for SignUp button
btnSignup.setBounds(70, 270, 115, 26);
// add button into contentPane
contentPane.add(btnSignup);
JLabel lblCustomerDetails = new JLabel("Customer Details:");
lblCustomerDetails.setBounds(439, 344, 136, 20);
contentPane.add(lblCustomerDetails);
JLabel dispName = new JLabel("");
dispName.setBounds(466, 51, 69, 20);
contentPane.add(dispName);
JLabel dispEmail = new JLabel("");
dispEmail.setBounds(466, 106, 69, 20);
contentPane.add(dispEmail);
JLabel dispAddress = new JLabel("");
dispAddress.setBounds(466, 161, 69, 20);
contentPane.add(dispAddress);
JSeparator separator = new JSeparator();
separator.setBounds(15, 328, 798, 14);
contentPane.add(separator);
JLabel lblLoginForm = new JLabel("Login Form");
lblLoginForm.setBounds(70, 344, 86, 20);
contentPane.add(lblLoginForm);
JLabel lblUsernameemail = new JLabel("Username/Email:");
lblUsernameemail.setBounds(70, 380, 122, 20);
contentPane.add(lblUsernameemail);
loginEmail = new JTextField();
loginEmail.setBounds(224, 377, 146, 26);
contentPane.add(loginEmail);
loginEmail.setColumns(10);
JLabel lblPassword_1 = new JLabel("Password:");
lblPassword_1.setBounds(70, 416, 86, 20);
contentPane.add(lblPassword_1);
loginPassword = new JPasswordField();
loginPassword.setBounds(224, 413, 146, 26);
contentPane.add(loginPassword);
loginPassword.setColumns(10);
JButton btnLogin = new JButton("Login");
btnLogin.setBounds(70, 449, 115, 29);
contentPane.add(btnLogin);
JLabel lblName_1 = new JLabel("Name:");
lblName_1.setBounds(435, 380, 69, 20);
contentPane.add(lblName_1);
JLabel lblAddress_1 = new JLabel("Address:");
lblAddress_1.setBounds(435, 429, 69, 20);
contentPane.add(lblAddress_1);
JLabel detailName = new JLabel("");
detailName.setBounds(519, 380, 69, 20);
contentPane.add(detailName);
JLabel detailAddress = new JLabel("");
detailAddress.setBounds(519, 429, 160, 20);
contentPane.add(detailAddress);
JButton btnLogout = new JButton("Logout");
btnLogout.setBounds(234, 449, 115, 29);
contentPane.add(btnLogout);
JButton btnAddToCart_0 = new JButton("Add to Cart");
JButton btnAddToCart_1 = new JButton("Add to Cart");
JButton btnAddToCart_2 = new JButton("Add to Cart");
JButton btnAddToCart_3 = new JButton("Add to Cart");
JButton btnAddToCart_4 = new JButton("Add to Cart");
JButton btnAddToCart_5 = new JButton("Add to Cart");
JButton btnAddToCart_6 = new JButton("Add to Cart");
JButton btnAddToCart_7 = new JButton("Add to Cart");
JButton btnAddToCart_8 = new JButton("Add to Cart");
JButton btnAddToCart_9 = new JButton("Add to Cart");
JButton btnRemove_0 = new JButton("Remove");
JButton btnRemove_1 = new JButton("Remove");
JButton btnRemove_2 = new JButton("Remove");
JButton btnRemove_3 = new JButton("Remove");
JButton btnRemove_4 = new JButton("Remove");
JButton btnRemove_5 = new JButton("Remove");
JButton btnRemove_6 = new JButton("Remove");
JButton btnRemove_7 = new JButton("Remove");
JButton btnRemove_8 = new JButton("Remove");
JButton btnRemove_9 = new JButton("Remove");
JLabel lblInventory = new JLabel("Inventory");
JLabel lblQuantity = new JLabel("Quantity");
textField = new JTextField();
textField_1 = new JTextField();
textField_2 = new JTextField();
textField_3 = new JTextField();
textField_4 = new JTextField();
textField_5 = new JTextField();
textField_6 = new JTextField();
textField_7 = new JTextField();
textField_8 = new JTextField();
textField_9 = new JTextField();
textField.setBounds(502, 62, 79, 20);
contentPane.add(textField);
textField.setColumns(10);
textField_1.setBounds(502, 86, 79, 20);
contentPane.add(textField_1);
textField_1.setColumns(10);
textField_2.setBounds(502, 113, 79, 20);
contentPane.add(textField_2);
textField_2.setColumns(10);
textField_3.setColumns(10);
textField_3.setBounds(502, 140, 79, 20);
contentPane.add(textField_3);
textField_4.setColumns(10);
textField_4.setBounds(502, 166, 79, 20);
contentPane.add(textField_4);
textField_5.setColumns(10);
textField_5.setBounds(502, 191, 79, 20);
contentPane.add(textField_5);
textField_6.setColumns(10);
textField_6.setBounds(502, 217, 79, 20);
contentPane.add(textField_6);
textField_7.setColumns(10);
textField_7.setBounds(502, 243, 79, 20);
contentPane.add(textField_7);
textField_8.setColumns(10);
textField_8.setBounds(502, 267, 79, 20);
contentPane.add(textField_8);
textField_9.setColumns(10);
textField_9.setBounds(502, 292, 79, 20);
contentPane.add(textField_9);
JButton btnCartContents = new JButton("Cart Contents");
btnCartContents.setBounds(872, 71, 115, 29);
contentPane.add(btnCartContents);
JButton btnRefreshInventory = new JButton("Refresh Inventory");
btnRefreshInventory.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
//items = (ArrayList<ItemsForSale>) cIn.readObject();
lblItem1.setText(
items.get(0).getItemName() + " " + items.get(0).getItemsInStock());
lblItem2.setText(
items.get(1).getItemName() + " " + items.get(1).getItemsInStock());
lblItem3.setText(
items.get(2).getItemName() + " " + items.get(2).getItemsInStock());
lblItem4.setText(
items.get(3).getItemName() + " " + items.get(3).getItemsInStock());
lblItem5.setText(
items.get(4).getItemName() + " " + items.get(4).getItemsInStock());
lblItem6.setText(
items.get(5).getItemName() + " " + items.get(5).getItemsInStock());
lblItem7.setText(
items.get(6).getItemName() + " " + items.get(6).getItemsInStock());
lblItem8.setText(
items.get(7).getItemName() + " " + items.get(7).getItemsInStock());
lblItem9.setText(
items.get(8).getItemName() + " " + items.get(8).getItemsInStock());
lblItem10
.setText(items.get(9).getItemName() + " " + items.get(9).getItemsInStock());
}
});
btnRefreshInventory.setBounds(872, 31, 115, 29);
contentPane.add(btnRefreshInventory);
lblInventory.setBounds(436, 41, 69, 20);
contentPane.add(lblInventory);
lblQuantity.setBounds(515, 41, 69, 20);
contentPane.add(lblQuantity);
btnAddToCart_0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_0";
textFieldValidation(textField,'a',s);
}
});
btnAddToCart_0.setBounds(603, 62, 115, 20);
contentPane.add(btnAddToCart_0);
btnAddToCart_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_1";
textFieldValidation(textField_1,'a',s);
}
});
btnAddToCart_1.setBounds(603, 86, 115, 20);
contentPane.add(btnAddToCart_1);
btnAddToCart_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_2";
textFieldValidation(textField_2,'a',s);
}
});
btnAddToCart_2.setBounds(603, 113, 115, 20);
contentPane.add(btnAddToCart_2);
btnAddToCart_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_3";
textFieldValidation(textField_3,'a',s);
}
});
btnAddToCart_3.setBounds(603, 140, 115, 20);
contentPane.add(btnAddToCart_3);
btnAddToCart_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_4";
textFieldValidation(textField_4,'a',s);
}
});
btnAddToCart_4.setBounds(603, 166, 115, 20);
contentPane.add(btnAddToCart_4);
btnAddToCart_5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_5";
textFieldValidation(textField_5,'a',s);
}
});
btnAddToCart_5.setBounds(603, 191, 115, 20);
contentPane.add(btnAddToCart_5);
btnAddToCart_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_6";
textFieldValidation(textField_6,'a',s);
}
});
btnAddToCart_6.setBounds(603, 217, 115, 20);
contentPane.add(btnAddToCart_6);
btnAddToCart_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_7";
textFieldValidation(textField_7,'a',s);
}
});
btnAddToCart_7.setBounds(603, 243, 115, 20);
contentPane.add(btnAddToCart_7);
btnAddToCart_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_8";
textFieldValidation(textField_8,'a',s);
}
});
btnAddToCart_8.setBounds(603, 267, 115, 20);
contentPane.add(btnAddToCart_8);
btnAddToCart_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnAddToCart_9";
textFieldValidation(textField_9,'a',s);
}
});
btnAddToCart_9.setBounds(603, 292, 115, 20);
contentPane.add(btnAddToCart_9);
btnRemove_0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_0";
textFieldValidation(textField,'r',s);
}
});
btnRemove_0.setBounds(743, 62, 115, 20);
contentPane.add(btnRemove_0);
btnRemove_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_1";
textFieldValidation(textField_1,'r',s);
}
});
btnRemove_1.setBounds(743, 86, 115, 20);
contentPane.add(btnRemove_1);
btnRemove_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_2";
textFieldValidation(textField_2,'r',s);
}
});
btnRemove_2.setBounds(743, 113, 115, 20);
contentPane.add(btnRemove_2);
btnRemove_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_3";
textFieldValidation(textField_3,'r',s);
}
});
btnRemove_3.setBounds(743, 140, 115, 20);
contentPane.add(btnRemove_3);
btnRemove_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_4";
textFieldValidation(textField_4,'r',s);
}
});
btnRemove_4.setBounds(743, 166, 115, 20);
contentPane.add(btnRemove_4);
btnRemove_5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_5";
textFieldValidation(textField_5,'r',s);
}
});
btnRemove_5.setBounds(743, 191, 115, 20);
contentPane.add(btnRemove_5);
btnRemove_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_6";
textFieldValidation(textField_6,'r',s);
}
});
btnRemove_6.setBounds(743, 217, 115, 20);
contentPane.add(btnRemove_6);
btnRemove_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_7";
textFieldValidation(textField_7,'r',s);
}
});
btnRemove_7.setBounds(743, 243, 115, 20);
contentPane.add(btnRemove_7);
btnRemove_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_8";
textFieldValidation(textField_8,'r',s);
}
});
btnRemove_8.setBounds(743, 267, 115, 20);
contentPane.add(btnRemove_8);
btnRemove_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = "btnRemove_9";
textFieldValidation(textField_9,'r',s);
}
});
btnRemove_9.setBounds(743, 292, 115, 20);
contentPane.add(btnRemove_9);
btnRemove_0.setEnabled(false);
btnRemove_1.setEnabled(false);
btnRemove_2.setEnabled(false);
btnRemove_3.setEnabled(false);
btnRemove_4.setEnabled(false);
btnRemove_5.setEnabled(false);
btnRemove_6.setEnabled(false);
btnRemove_7.setEnabled(false);
btnRemove_8.setEnabled(false);
btnRemove_9.setEnabled(false);
btnAddToCart_0.setEnabled(false);
btnAddToCart_9.setEnabled(false);
btnAddToCart_1.setEnabled(false);
btnAddToCart_2.setEnabled(false);
btnAddToCart_3.setEnabled(false);
btnAddToCart_4.setEnabled(false);
btnAddToCart_5.setEnabled(false);
btnAddToCart_6.setEnabled(false);
btnAddToCart_7.setEnabled(false);
btnAddToCart_8.setEnabled(false);
btnRefreshInventory.setEnabled(false);
btnCartContents.setEnabled(false);
btnLogin.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try // try block
{
// declare variables
String username = "";
String pwd = "";
// get values using getText() method
username = loginEmail.getText().trim();
pwd = new String(loginPassword.getPassword());
// check condition it field equals to blank throw error
// message
if (username.equals("") || pwd.equals("")) {
JOptionPane.showMessageDialog(null, " name or password or Role is wrong", "Error",
JOptionPane.ERROR_MESSAGE);
} else if (detailName.getText().length() != 0 || detailAddress.getText().length() != 0) {
JOptionPane.showMessageDialog(null, "Logout from previous user to login", "Error",
JOptionPane.ERROR_MESSAGE);
} else // else insert query is run properly
{
String accnum = null;
// get logged in customer details
for (String[] x : customers) {
if (x[2].compareTo(username) == 0 && x[3].compareTo(pwd) == 0) {
detailName.setText(x[1]);
detailAddress.setText(x[4]);
}
}
// send customer details to server
oout.writeChar('n');
oout.writeObject(customer);
items = (ArrayList<ItemsForSale>) cIn.readObject();
lblItem1.setText(
items.get(0).getItemName() + " " + items.get(0).getItemsInStock());
lblItem2.setText(
items.get(1).getItemName() + " " + items.get(1).getItemsInStock());
lblItem3.setText(
items.get(2).getItemName() + " " + items.get(2).getItemsInStock());
lblItem4.setText(
items.get(3).getItemName() + " " + items.get(3).getItemsInStock());
lblItem5.setText(
items.get(4).getItemName() + " " + items.get(4).getItemsInStock());
lblItem6.setText(
items.get(5).getItemName() + " " + items.get(5).getItemsInStock());
lblItem7.setText(
items.get(6).getItemName() + " " + items.get(6).getItemsInStock());
lblItem8.setText(
items.get(7).getItemName() + " " + items.get(7).getItemsInStock());
lblItem9.setText(
items.get(8).getItemName() + " " + items.get(8).getItemsInStock());
lblItem10
.setText(items.get(9).getItemName() + " " + items.get(9).getItemsInStock());
btnRemove_0.setEnabled(true);
btnRemove_1.setEnabled(true);
btnRemove_2.setEnabled(true);
btnRemove_3.setEnabled(true);
btnRemove_4.setEnabled(true);
btnRemove_5.setEnabled(true);
btnRemove_6.setEnabled(true);
btnRemove_7.setEnabled(true);
btnRemove_8.setEnabled(true);
btnRemove_9.setEnabled(true);
btnAddToCart_0.setEnabled(true);
btnAddToCart_9.setEnabled(true);
btnAddToCart_1.setEnabled(true);
btnAddToCart_2.setEnabled(true);
btnAddToCart_3.setEnabled(true);
btnAddToCart_4.setEnabled(true);
btnAddToCart_5.setEnabled(true);
btnAddToCart_6.setEnabled(true);
btnAddToCart_7.setEnabled(true);
btnAddToCart_8.setEnabled(true);
btnRefreshInventory.setEnabled(true);
btnCartContents.setEnabled(true);
}
} catch (Exception se) {
// handle errors for JDBC
se.printStackTrace();
}
}
});
btnLogout.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
String username = "";
String pwd = "";
// get values using getText() method
username = loginEmail.getText().trim();
pwd = new String(loginPassword.getPassword());
// check condition if field equals to blank throw error
// message
if (username.equals("") || pwd.equals("")) {
JOptionPane.showMessageDialog(null, " Not logged in", "Error", JOptionPane.ERROR_MESSAGE);
} else {
detailName.setText("");
detailAddress.setText("");
oout.writeObject(customer);
btnRemove_0.setEnabled(false);
btnRemove_1.setEnabled(false);
btnRemove_2.setEnabled(false);
btnRemove_3.setEnabled(false);
btnRemove_4.setEnabled(false);
btnRemove_5.setEnabled(false);
btnRemove_6.setEnabled(false);
btnRemove_7.setEnabled(false);
btnRemove_8.setEnabled(false);
btnRemove_9.setEnabled(false);
btnAddToCart_0.setEnabled(false);
btnAddToCart_9.setEnabled(false);
btnAddToCart_1.setEnabled(false);
btnAddToCart_2.setEnabled(false);
btnAddToCart_3.setEnabled(false);
btnAddToCart_4.setEnabled(false);
btnAddToCart_5.setEnabled(false);
btnAddToCart_6.setEnabled(false);
btnAddToCart_7.setEnabled(false);
btnAddToCart_8.setEnabled(false);
btnRefreshInventory.setEnabled(false);
btnCartContents.setEnabled(false);
}
} catch (Exception e2) {
// TODO: handle exception
}
}
});
}
public void textFieldValidation(JTextField t, char a, String s){
int i = Integer.parseInt(t.getText());
s = s.substring(s.length()-1);
int n = Integer.parseInt(s);
int iStock = items.get(n).getItemsInStock();
try {
if ((i>0)&&(i<7)) {
if(a == 'a'){
iStock = iStock - i;
}else if(a == 'r'){
iStock = iStock + i;
}
items.get(n).setItemsInStock(iStock);
try {
oout.writeObject(items);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} catch (NumberFormatException n1) {
JOptionPane.showMessageDialog(null, " Please input valid quantity", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
}
从不同客户端线程向服务器发送多个对象的示例代码将非常有用
答案 0 :(得分:1)
如果您要在对象之前使用此系统发送字符来告诉您它是什么,则需要在每个对象之前发送它。否则,当您阅读该字符时,如果不是'n'
情况,则会丢弃部分对象。
至于您的ClassCastException,
,您提供了零信息,但随附的信息会告诉您所需的和实际的课程。
修改强>
Object s = oin.readObject();
if(s instanceof CustomerAccount){
CustomerAccount cust = (CustomerAccount) oin.readObject();
这是胡说八道。它应该是
CustomerAccount cust = (CustomerAccount)s;
显然。