⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inpanel.java

📁 股票投资管理系统
💻 JAVA
字号:
import db.*;
import bean.StockBean;
import querystock.NoSuchTickerException;
import querystock.QueryTheStock;
import querystock.WebsiteDataException;

import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Rectangle;

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.*;
import java.util.Vector;

import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;


public class InPanel extends JPanel {
    
	public InPanel(int in_id) {
        try {
            jbInit(in_id);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    
	}

    private void jbInit(int in_id) throws Exception {
        this.setLayout(null);
        this.setSize(700, 500);
        jLabel1.setText("股票代码:");
        jLabel1.setBounds(new Rectangle(30, 25, 70, 25));
        stock_code.setBounds(new Rectangle(90, 25, 120, 25));   
        jLabel2.setText("股票名称:");
        jLabel2.setBounds(new Rectangle(240, 25, 70, 25));
        stock_name.setBounds(new Rectangle(300, 25, 120, 25)); 
        jLabel3.setText("当前价格:");
        jLabel3.setBounds(new Rectangle(450, 25, 70, 25));
        stock_npre.setBounds(new Rectangle(510, 25, 120, 25));
        stock_npre.setEditable(false);
        jLabel4.setText("购入单价:");
        jLabel4.setBounds(new Rectangle(30, 65, 70, 25));
        stock_pre.setBounds(new Rectangle(90, 65, 120, 25));
        jLabel5.setText("购入数量:");
        jLabel5.setBounds(new Rectangle(240, 65, 70, 25));
        stock_num.setBounds(new Rectangle(300, 65, 120, 25));
        jLabel6.setText("购入总额:");
        jLabel6.setBounds(new Rectangle(450, 65, 70, 25));
        stock_total.setBounds(new Rectangle(510, 65, 120, 25));
        stock_total.setEditable(false);
        jLabel7.setText("当前股票总额:");
        jLabel7.setBounds(new Rectangle(30, 105, 100, 25));
        stock_ntotal.setBounds(new Rectangle(120, 105, 120, 25));
        stock_ntotal.setEditable(false);
        jLabel8.setText("当前股票状态:");
        jLabel8.setBounds(new Rectangle(270, 105, 100, 25));
        stock_statu.setBounds(new Rectangle(370, 105, 120, 25));
        stock_statu.setEditable(false);
        insert.setBounds(new Rectangle(30, 150, 60, 30));
        insert.setText("添加");
        insert.addActionListener(new InPanel_insert_actionAdapter(this));        
        delete.setBounds(new Rectangle(120, 150, 60, 30));
        delete.setText("删除");
        delete.addActionListener(new InPanel_delete_actionAdapter(this));
        update.setBounds(new Rectangle(210, 150, 60, 30));
        update.setText("更新");
        update.addActionListener(new InPanel_update_actionAdapter(this));
        clear.setBounds(new Rectangle(300, 150, 60, 30));
        clear.setText("清空");
        clear.addActionListener(new InPanel_clear_actionAdapter(this));
        sort_pre.setBounds(new Rectangle(390, 150, 120, 30));
        sort_pre.setText("按购入价排序"); 
        sort_pre.addActionListener(new InPanel_sort_pre_actionAdapter(this));
        k_line.setBounds(new Rectangle(540, 150, 100, 30));
        k_line.setText("查看K线图");
        k_line.addActionListener(new InPanel_k_line_actionAdapter(this));
        jScrollPane1.setBounds(new Rectangle(30, 200, 640, 280));
        this.add(jLabel1);
        this.add(stock_code);
        this.add(jLabel2);
        this.add(stock_name);
        this.add(jLabel3);
        this.add(stock_npre);
        this.add(stock_pre);
        this.add(jLabel4);
        this.add(stock_num);
        this.add(jLabel5);
        this.add(stock_total);
        this.add(jLabel6);
        this.add(jLabel7);
        this.add(stock_ntotal);
        this.add(jLabel8);
        this.add(stock_statu);
        this.add(insert);
        this.add(delete);
        this.add(update); 
        this.add(clear);
        this.add(sort_pre);
        this.add(k_line);
        this.add(jScrollPane1);
        sb.setIn_id(in_id);
        jScrollPane1.getViewport().add(table);
        table.addMouseListener(new InPanel_table_mouseAdapter(this));       
        dt = setTable(dt,false);
        table.setModel(dt);
        table.setCellSelectionEnabled(true);           
    }

    JLabel jLabel1 = new JLabel();
    JTextField stock_code = new JTextField();
    JLabel jLabel2 = new JLabel();
    JTextField stock_name = new JTextField();
    JLabel jLabel3 = new JLabel();
    JTextField stock_npre = new JTextField();
    JLabel jLabel4 = new JLabel();
    JTextField stock_pre = new JTextField();
    JLabel jLabel5 = new JLabel();
    JTextField stock_num = new JTextField();
    JLabel jLabel6 = new JLabel();
    JTextField stock_total = new JTextField();
    JLabel jLabel7 = new JLabel();
    JTextField stock_ntotal = new JTextField();
    JLabel jLabel8 = new JLabel();
    JTextField stock_statu = new JTextField();
    JButton insert = new JButton();
    JButton delete = new JButton();
    JButton sort_pre = new JButton();
    JButton update = new JButton();
    JButton clear = new JButton();
    JButton k_line = new JButton();
    JScrollPane jScrollPane1 = new JScrollPane();
    MyTable table = new MyTable();
    DefaultTableModel dt=new DefaultTableModel();
    JOptionPane jOptionPane1 = new JOptionPane();
    StockBean sb = new StockBean();
    
    public void table_mouseClicked(MouseEvent e) {
    	stock_code.setEditable(false);
    	stock_name.setEditable(false);
    	int row = table.getSelectedRow();
    	String code = table.getValueAt(row, 0).toString();
    	String name = table.getValueAt(row, 1).toString();
        String num = table.getValueAt(row, 2).toString();
        String pre = table.getValueAt(row, 3).toString();
        Float total = Integer.valueOf(num)*Float.valueOf(pre);
        try {
			String npre = QueryTheStock.getLastValue(code);
			Float ntotal = Integer.valueOf(num)*Float.valueOf(npre);
			stock_npre.setText(npre);
			stock_ntotal.setText(ntotal.toString());
			Float statu = ntotal-total;
			if(statu>=0){
				stock_statu.setText("+"+statu);
			}else{
				stock_statu.setText(statu.toString());
			}
		} catch (WebsiteDataException e1) {
			e1.printStackTrace();
		} catch (NoSuchTickerException e1) {
			e1.printStackTrace();
		}
        stock_code.setText(code);
        stock_name.setText(name);
        stock_num.setText(num);
        stock_pre.setText(pre);
        stock_total.setText(total.toString());
        
        
    }
    
    
    
    public void clear_actionPerformed(ActionEvent e) {
    	clearText();
    }
    
    
    public void insert_actionPerformed(ActionEvent e) {
    	int code = stock_code.getText().length();
    	int name = stock_name.getText().length();
    	long num = 0;
    	float pre = 0;
    	if(code!=0&&name!=0){
    		sb.setStock_code(stock_code.getText());
    		sb.setStock_name(stock_name.getText());
    		if(stock_num.getText().length()!=0){
    			num = Long.valueOf(stock_num.getText());
    			sb.setStock_num(num);
    		}
    		if(stock_pre.getText().length()!=0){
    			pre = Float.valueOf(stock_pre.getText());
    			sb.setStock_pre(pre);
    		}
    		float total = num*pre;
    		sb.setStock_total(total);
    		StockDB sdb = new StockDB();
    		boolean flag = sdb.checkStock(sb);
    		if(flag){
    			int result = sdb.insertStock(sb);
    			if(result==1){
    				jOptionPane1.showMessageDialog(this, "成功添加股票信息--"+sb.getStock_name());
    				clearText();
    				Vector newrow = new Vector();
    				newrow.addElement(sb.getStock_code());
    				newrow.addElement(sb.getStock_name());
    				newrow.addElement(sb.getStock_num());
    				newrow.addElement(sb.getStock_pre());
    				dt.addRow(newrow);
    				table.setModel(dt);		
    			}else{
    				jOptionPane1.showMessageDialog(this, "添加股票信息失败!");
    			}
    		}else{
    			jOptionPane1.showMessageDialog(this, sb.getStock_name()+"--股票信息已存在!");
    		}
    	}else{
    		jOptionPane1.showMessageDialog(this, "股票代码/股票名称不能为空");
    	}
    }
    
    
    
    public void delete_actionPerformed(ActionEvent e) {
    	
    	int code = stock_code.getText().length();
    	int name = stock_name.getText().length();
    	if(code!=0&&name!=0){
    		int result = jOptionPane1.showConfirmDialog(this, "确定是否要删除股票--"+stock_name.getText()+"?");
    		if(result==0){
    			sb.setStock_code(stock_code.getText());
    			sb.setStock_name(stock_name.getText());
    			StockDB sdb = new StockDB();
    			result = sdb.deleteStock(sb);
    			if(result>0){
    				jOptionPane1.showMessageDialog(this, sb.getStock_name()+"股票删除成功!");
    				clearText();
    				dt = new DefaultTableModel();
    				dt = setTable(dt,false);
    				table.setModel(dt);
    			}else{
    				jOptionPane1.showMessageDialog(this, sb.getStock_name()+"股票删除失败!");
    			}
    		}
    	}else{
    		jOptionPane1.showMessageDialog(this, "请选择所要删除的股票信息!");
    	}
    				
    }

    
    
    
    public void update_actionPerformed(ActionEvent e) {
    	int code = stock_code.getText().length();
    	if(code!=0){
    		sb.setStock_code(stock_code.getText());
    		sb.setStock_name(stock_name.getText());
    		long num = Long.valueOf(stock_num.getText());
    		sb.setStock_num(num);
    		Float pre = Float.valueOf(stock_pre.getText());
    		sb.setStock_pre(pre);
    		Float total = num*pre;
    		sb.setStock_total(total);
    		StockDB sdb = new StockDB();
    		int result = sdb.updateStock(sb);
    		if(result>0){
    			jOptionPane1.showMessageDialog(this, sb.getStock_name()+"股票信息更新成功");
    			clearText();
    			dt = new DefaultTableModel();
				dt = setTable(dt,false);
				table.setModel(dt);
    		}else{
    			jOptionPane1.showMessageDialog(this, sb.getStock_name()+"股票信息更新失败");
    		}
    	}else{
    		jOptionPane1.showMessageDialog(this, "请选择所要更新的股票信息!");
    	}
    }
    
    
    public void sort_pre_actionPerformed(ActionEvent e) {
    	dt = new DefaultTableModel();
		dt = setTable(dt,true);
		table.setModel(dt);
    }
    
    
    public void k_line_actionPerformed(ActionEvent e) {

    	if(stock_code.getText().length()!=0){
    		String code = stock_code.getText();
    		KLineFrame kf = new KLineFrame(code);
    		kf.setVisible(true);
    	}else{
    		jOptionPane1.showMessageDialog(this, "请选择所要查看K线图的股票信息!");
    	}
    }
    
    
      
    private DefaultTableModel setTable(DefaultTableModel dt,boolean flag){
    	
    	ResultSet rs = null;
    	StockDB sdb = new StockDB();
    	if(flag){
    		rs = sdb.sortStock(sb);
    	}else{
    		rs = sdb.getResult(sb);
    	}
    	dt.addColumn("股票代码"); 
        dt.addColumn("股票名称");
        dt.addColumn("购入数量");
        dt.addColumn("购入单价");
           
        try {
			while(rs.next()){
				Vector newrow = new Vector();
				newrow.addElement(rs.getString(1)); 
				newrow.addElement(rs.getString(2)); 
				newrow.addElement(rs.getInt(3)); 
				newrow.addElement(rs.getFloat(4)); 
				dt.addRow(newrow);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		try {
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
        
    	return dt;
    }
    
    
    public void clearText(){
    	stock_code.setEditable(true);
    	stock_name.setEditable(true);
    	stock_code.setText("");
    	stock_name.setText("");
    	stock_num.setText("");
    	stock_npre.setText("");
    	stock_pre.setText("");
    	stock_total.setText("");
    	stock_ntotal.setText("");
    }
}


class InPanel_table_mouseAdapter extends MouseAdapter {
    private InPanel adaptee;
    InPanel_table_mouseAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.table_mouseClicked(e);
    }
}


class InPanel_clear_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_clear_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.clear_actionPerformed(e);
    }
}



class InPanel_insert_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_insert_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.insert_actionPerformed(e);
    }
}




class InPanel_delete_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_delete_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.delete_actionPerformed(e);
    }
}



class InPanel_update_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_update_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.update_actionPerformed(e);
    }
}



class InPanel_sort_pre_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_sort_pre_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.sort_pre_actionPerformed(e);
    }
}



class InPanel_k_line_actionAdapter implements ActionListener {
    private InPanel adaptee;
    InPanel_k_line_actionAdapter(InPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.k_line_actionPerformed(e);
    }
}

class MyTable extends JTable{    
	public boolean isCellEditable(int row,int col){ 
	    return false; 
	} 
} 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -