?? mall.java
字號:
import java.io.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
class Mall implements ActionListener,ItemListener
{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private MyTable defaultModel;
private JFrame f;
private JTable table;
private JLabel s0;
private JTextField amount,user,storeName,storeOwner,storeType;
private JTextArea broadcast,storeInfo;
private JComboBox cb;
private JCheckBox openbox;
private String selectType;
private boolean open;
private Customer customer;
private ShoppingBasket basket;
private String[] shopInfo;
//////////////////////內部類:Shop/////////////////
class Shop implements ActionListener
{
private JDialog d;
private MyTable mt,btable;
private JTable dlgtable,basketStatus;
private String shopName;
private BufferedReader receive;
private PrintWriter send;
private Socket shopSocket;
private String IP=null;
private String[] goodsInfo;
/////////////////////查看商品對話框///////////////
private class ViewDialog implements ActionListener
{
private JTextField t1,t2;
private JTextArea t3;
private JDialog jd;
public ViewDialog()
{
jd = new JDialog(d,"查看商品",true);
Container contentPane = jd.getContentPane();
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(2,2,2,2);
textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
"商品信息:"+dlgtable.getValueAt(dlgtable.getSelectedRow(),0),TitledBorder.CENTER,TitledBorder.TOP));
JLabel l1 = new JLabel("價格:");
JLabel l2 = new JLabel("數量:");
JLabel l3 = new JLabel("商品描述:");
t1 = new JTextField(12);
t1.setText(""+dlgtable.getValueAt(dlgtable.getSelectedRow(),1));
t1.setEditable(false);
t2 = new JTextField(12);
t2.setText(""+dlgtable.getValueAt(dlgtable.getSelectedRow(),2));
t2.setEditable(false);
t3 = new JTextArea(4,12);
t3.setLineWrap(true);
t3.setText(goodsInfo[dlgtable.getSelectedRow()]);
t3.setEditable(false);
t3.setBackground(new Color(238,238,238));
gbc.gridy=1;
gbc.gridx=0;
textPanel.add(l1,gbc);
gbc.gridx=1;
textPanel.add(t1,gbc);
gbc.gridy=2;
gbc.gridx=0;
textPanel.add(l2,gbc);
gbc.gridx=1;
textPanel.add(t2,gbc);
gbc.gridy=3;
gbc.gridx=0;
textPanel.add(l3,gbc);
gbc.gridx=1;
textPanel.add(new JScrollPane(t3),gbc);
JPanel buttonPanel=new JPanel();
JButton b=new JButton("購買");
b.addActionListener(this);
buttonPanel.add(b);
b=new JButton("取消");
b.addActionListener(this);
buttonPanel.add(b);
contentPane.add(textPanel,BorderLayout.NORTH);
contentPane.add(buttonPanel,BorderLayout.CENTER);
jd.pack();
jd.setBounds(400,300,230,230);
jd.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if (cmd.equals("購買"))
{
jd.dispose();
new BuyDialog();
}
else if (cmd.equals("取消"))
{
jd.dispose();
}
}
}
/////////////////////購買商品對話框///////////////
private class BuyDialog implements ActionListener
{
private class Echo extends Thread
{
Echo()
{
start();
}
public void run()
{
try
{
String result = receive.readLine();
if(result.equals("ACCEPT"))
{
JOptionPane.showMessageDialog(null,"對方接受了您的出價,交易成功!","回復信息:交易成功",1);
basket.add(shopName,name,quantity,price,in,out);
renovate();
btable.addRow(new Vector());
int i = btable.getRowCount()-1;
basketStatus.setValueAt(basket.getShop(i),i,0);
basketStatus.setValueAt(basket.getName(i),i,1);
basketStatus.setValueAt(basket.getQuantity(i),i,2);
basketStatus.setValueAt(basket.getPrice(i),i,3);
basketStatus.setValueAt(basket.getStatus(i),i,4);
}
else if(result.equals("REFUSE"))
{
JOptionPane.showMessageDialog(null,"對方拒絕了您的出價,交易失敗!","回復信息:交易失敗",1);
}
}catch(Exception ex){}
}
}
private JTextField t1,t2;
private JDialog jd;
private String name;
private int quantity;
private double price;
private Echo echo;
public BuyDialog()
{
jd = new JDialog(d,"購買商品",true);
Container contentPane = jd.getContentPane();
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(2,2,2,2);
textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
"購買商品:"+dlgtable.getValueAt(dlgtable.getSelectedRow(),0),TitledBorder.CENTER,TitledBorder.TOP));
JLabel l1 = new JLabel("購買數量:");
JLabel l2 = new JLabel("出價(總價):");
t1 = new JTextField(6);
t1.setText(1+"");
t2 = new JTextField(6);
t2.setText((String)dlgtable.getValueAt(dlgtable.getSelectedRow(),1));
gbc.gridy=1;
gbc.gridx=0;
textPanel.add(l1,gbc);
gbc.gridx=1;
textPanel.add(t1,gbc);
gbc.gridy=2;
gbc.gridx=0;
textPanel.add(l2,gbc);
gbc.gridx=1;
textPanel.add(t2,gbc);
JPanel buttonPanel=new JPanel();
JButton b=new JButton("確定");
b.addActionListener(this);
buttonPanel.add(b);
b=new JButton("取消");
b.addActionListener(this);
buttonPanel.add(b);
contentPane.add(textPanel,BorderLayout.NORTH);
contentPane.add(buttonPanel,BorderLayout.CENTER);
jd.pack();
jd.setBounds(400,300,200,160);
jd.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if (cmd.equals("確定"))
{
try
{
name = (String)dlgtable.getValueAt(dlgtable.getSelectedRow(),0);
quantity = Integer.parseInt(t1.getText());
price = Double.parseDouble(t2.getText());
send.println("BUY");
send.println(customer.getUserName());
send.println(name);
send.println(quantity);
send.println(price);
jd.dispose();
JOptionPane.showMessageDialog(null,"已發送訂單請求,請不要在收到回復前退出!","提示信息",1);
echo = new Echo();
}catch(Exception ex){ex.printStackTrace();}
}
else if (cmd.equals("取消"))
{
jd.dispose();
}
}
}
///////////////////////留言框/////////////////////
private class MessageDialog
{
String message,next;
public MessageDialog()
{
message = "";
try
{
send.println("GETMSG");
next = receive.readLine();
while(!next.equals("OVER"))
{
message +=next+"\n";
next = receive.readLine();
}
}catch(Exception ex){}
final JDialog jd = new JDialog(d,"留言板",true);
Container contentPane = jd.getContentPane();
final JTextArea msg = new JTextArea(12,25);
msg.setBackground(new Color(238,238,238));
msg.setEditable(false);
msg.setLineWrap(true);
msg.setText(message);
JPanel textPanel = new JPanel();
textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,0),
"查看店鋪:"+shopName+"留言",TitledBorder.CENTER,TitledBorder.TOP));
textPanel.add(new JScrollPane(msg));
final JTextArea leaveMsg = new JTextArea(5,25);
leaveMsg.setLineWrap(true);
JPanel msgPanel = new JPanel();
msgPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,0),
"請給店鋪:"+shopName+"留言",TitledBorder.CENTER,TitledBorder.TOP));
msgPanel.add(new JScrollPane(leaveMsg));
JPanel buttonPanel=new JPanel();
JButton b=new JButton("發送");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String time = DateFormat.getDateTimeInstance(2,2).format(new java.util.Date());
send.println("MSG");
send.println(customer.getUserName()+" at "+time+":\n"+leaveMsg.getText());
send.println("OVER");
jd.dispose();
}
});
buttonPanel.add(b);
b=new JButton("取消");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
jd.dispose();
}
});
buttonPanel.add(b);
contentPane.add(textPanel,BorderLayout.NORTH);
contentPane.add(msgPanel,BorderLayout.CENTER);
contentPane.add(buttonPanel,BorderLayout.SOUTH);
jd.setBounds(362,100,300,450);
jd.setVisible(true);
}
}
public Shop(String shopName)
{
this.shopName = shopName;
goodsInfo = new String[100];
d = new JDialog(f,"Shop:"+shopName,true);
Container contentPane=d.getContentPane();
try
{
out.println("CONNECT");
out.println(shopName);
IP = in.readLine();
shopSocket = new Socket(IP, 8000);
receive =
new BufferedReader(
new InputStreamReader(
shopSocket.getInputStream()));
send =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
shopSocket.getOutputStream())), true);
}catch(Exception ex){}
System.out.println("connected to shop");
/////////////////////////////用戶功能相關/////////////////////////////
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(4,1));
p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2),
"用戶功能選項",TitledBorder.CENTER,TitledBorder.TOP));
JPanel buttonPanel1 = new JPanel();
JButton b = new JButton(" 聊天 ");
b.addActionListener(this);
buttonPanel1.add(b);
JPanel buttonPanel2 = new JPanel();
b = new JButton(" 留言 ");
b.addActionListener(this);
buttonPanel2.add(b);
JPanel buttonPanel3 = new JPanel();
b = new JButton("查看商品");
b.addActionListener(this);
buttonPanel3.add(b);
JPanel buttonPanel4 = new JPanel();
b = new JButton("購買商品");
b.addActionListener(this);
buttonPanel4.add(b);
p1.add(buttonPanel1);
p1.add(buttonPanel2);
p1.add(buttonPanel3);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -