当按下按键进行搜索时弹出JTable

时间:2018-05-16 07:03:54

标签: java jtable

我制作了一个有TextFields的应用程序。当我点击搜索某个项目时,它会弹出包含项目列表的JTable。但问题是我们如何做到这一点。我尝试了很多次,但是在我的项目中请帮忙。

Screenshot

这是我试过的代码

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FocusTraversalPolicy;

import javax.swing.JFrame;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Font;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

import com.alee.laf.WebLookAndFeel;
import com.toedter.calendar.JDateChooser;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.CardLayout;
import java.awt.Component;

import javax.swing.JScrollPane;
import javax.swing.JTable;

import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;

public class DailySales3 {

    private JFrame frame;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField ItemID;
    private JTextField ItemName;
    private JTextField Stock;
    private JTextField Qnty;
    private JTextField UnitPrice;
    private JTextField Tax;
    private JTextField Amount;
    private JTextField Discount;
    private Connection con;
    private String query,auto;
    private PreparedStatement PStat;
    private ResultSet res;
    private DefaultTableModel model,model1;
    private JTable table_2;
    private JScrollPane scrollPane;
    private double AmountGet=0.0,AmountCal=0.0,AmountResult=0.0;
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    WebLookAndFeel.install();
                    DailySales3 window = new DailySales3();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public DailySales3() {
        initialize();
        con=Database.Database();

    }

    public void AmountCalculate()
    {
        AmountGet=Double.parseDouble(UnitPrice.getText());
        AmountCal=Double.parseDouble(Qnty.getText());
        AmountResult=AmountCal*AmountGet;
        Amount.setText(Double.toString(AmountResult));
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setResizable(false);
        frame.setBounds(100, 100, 1229, 658);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        JPanel panel = new JPanel();
        GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addComponent(panel, GroupLayout.DEFAULT_SIZE, 1213, Short.MAX_VALUE)
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addComponent(panel, GroupLayout.DEFAULT_SIZE, 630, Short.MAX_VALUE)
        );
        panel.setLayout(null);

        JLabel label = new JLabel("Bill No");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        label.setFont(new Font("Georgia", Font.BOLD, 12));
        label.setBounds(10, 11, 73, 35);
        panel.add(label);

        textField = new JTextField();
        textField.setFont(new Font("Georgia", Font.BOLD, 15));
        textField.setEditable(false);
        textField.setColumns(10);
        textField.setBounds(82, 11, 132, 35);
        panel.add(textField);

        JLabel label_1 = new JLabel("Bill Date");
        label_1.setHorizontalAlignment(SwingConstants.CENTER);
        label_1.setFont(new Font("Georgia", Font.BOLD, 12));
        label_1.setBounds(224, 11, 73, 35);
        panel.add(label_1);

        JDateChooser dateChooser = new JDateChooser();
        dateChooser.setFont(new Font("Georgia", Font.BOLD, 15));
        dateChooser.setBounds(296, 11, 132, 35);
        panel.add(dateChooser);

        JLabel label_2 = new JLabel("Sales Type");
        label_2.setHorizontalAlignment(SwingConstants.CENTER);
        label_2.setFont(new Font("Georgia", Font.BOLD, 12));
        label_2.setBounds(438, 11, 73, 35);
        panel.add(label_2);

        JComboBox comboBox = new JComboBox();
        comboBox.setFont(new Font("Georgia", Font.BOLD, 15));
        comboBox.setBounds(524, 10, 190, 35);
        panel.add(comboBox);

        JLabel label_3 = new JLabel("Customers");
        label_3.setHorizontalAlignment(SwingConstants.CENTER);
        label_3.setFont(new Font("Georgia", Font.BOLD, 12));
        label_3.setBounds(724, 11, 73, 35);
        panel.add(label_3);

        textField_1 = new JTextField();
        textField_1.setFont(new Font("Georgia", Font.BOLD, 15));
        textField_1.setColumns(10);
        textField_1.setBounds(797, 12, 210, 35);
        panel.add(textField_1);

        JButton button = new JButton("");
        button.setBounds(1016, 12, 38, 35);
        panel.add(button);

        JPanel panel_1 = new JPanel();
        panel_1.setBounds(10, 68, 997, 43);
        panel.add(panel_1);

        JLabel lblItemId = new JLabel("Item ID");
        lblItemId.setHorizontalAlignment(SwingConstants.CENTER);
        lblItemId.setPreferredSize(new Dimension(91, 35));
        lblItemId.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblItemId);

        JLabel lblItemName = new JLabel("Item Name");
        lblItemName.setPreferredSize(new Dimension(273, 35));
        lblItemName.setHorizontalAlignment(SwingConstants.CENTER);
        lblItemName.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblItemName);

        JLabel lblStock = new JLabel("Stock");
        lblStock.setPreferredSize(new Dimension(86, 35));
        lblStock.setHorizontalAlignment(SwingConstants.CENTER);
        lblStock.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblStock);

        JLabel lblQnty = new JLabel("Qnty");
        lblQnty.setPreferredSize(new Dimension(86, 35));
        lblQnty.setHorizontalAlignment(SwingConstants.CENTER);
        lblQnty.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblQnty);

        JLabel lblUnitPrice = new JLabel("Unit Price");
        lblUnitPrice.setPreferredSize(new Dimension(123, 35));
        lblUnitPrice.setHorizontalAlignment(SwingConstants.CENTER);
        lblUnitPrice.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblUnitPrice);

        JLabel lblTax = new JLabel("Tax (%)");
        lblTax.setPreferredSize(new Dimension(86, 35));
        lblTax.setHorizontalAlignment(SwingConstants.CENTER);
        lblTax.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblTax);

        JLabel lblDiscount = new JLabel("Discount (%)");
        lblDiscount.setPreferredSize(new Dimension(86, 35));
        lblDiscount.setHorizontalAlignment(SwingConstants.CENTER);
        lblDiscount.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblDiscount);

        JLabel lblAmount = new JLabel("Amount");
        lblAmount.setPreferredSize(new Dimension(123, 35));
        lblAmount.setHorizontalAlignment(SwingConstants.CENTER);
        lblAmount.setFont(new Font("Georgia", Font.BOLD, 12));
        panel_1.add(lblAmount);

        JPanel panel_2 = new JPanel();
        panel_2.setBounds(10, 112, 997, 43);
        panel.add(panel_2);
        panel_2.setLayout(null);

        ItemID = new JTextField();
        ItemID.setBounds(5, 5, 89, 34);
        ItemID.setFont(new Font("Georgia", Font.BOLD, 15));
        ItemID.setColumns(10);
        panel_2.add(ItemID);

        ItemName = new JTextField();
        ItemName.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                if(ItemName.getText().equals(""))
                {
                    while(table_2.getRowCount()>0)
                    {
                        model.removeRow(0);
                    }
                }
                else if(e.getKeyCode()==KeyEvent.VK_ENTER)
                {
                    table_2.requestFocus();
                    table_2.changeSelection(0, 0, false, false);
                }
                else
                {
                try {
                    while(table_2.getRowCount()>0)
                    {
                        model.removeRow(0);
                    }
                    query="Select Item_No,Item_Name,Current_Stock,Unit_Price,Tax,Discount from StockEntry where Item_Name like '"+ItemName.getText().trim()+"%'";
                    PStat=con.prepareStatement(query);
                    res=PStat.executeQuery();
                    while(res.next())
                    {
                        String ItemNo=res.getString("Item_No");
                        String ItemName=res.getString("Item_Name");
                        double CStock=res.getDouble("Current_Stock");
                        double PRate=res.getDouble("Unit_Price");
                        double tax=res.getDouble("Tax");
                        double discount=res.getDouble("Discount");
                        Object row[]= {ItemNo,ItemName,CStock,PRate,tax,discount};
                        model.addRow(row);
                    }
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
                }
            }
        });

        ItemName.setBounds(98, 5, 276, 34);
        ItemName.setFont(new Font("Georgia", Font.BOLD, 15));
        ItemName.setColumns(10);
        panel_2.add(ItemName);

        Stock = new JTextField();
        Stock.setBounds(376, 5, 89, 34);
        Stock.setFont(new Font("Georgia", Font.BOLD, 15));
        Stock.setColumns(10);
        panel_2.add(Stock);

        Qnty = new JTextField();
        Qnty.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                {
                    model1=(DefaultTableModel)table.getModel();
                    String itemno=ItemID.getText();
                    String itemname=ItemName.getText();
                    String qnty=Qnty.getText();
                    String unitprice=UnitPrice.getText();
                    String tax=Tax.getText();
                    String discount=Discount.getText();
                    String amount=Amount.getText();
                    Object rows[]= {itemno,itemname,qnty,unitprice,tax,discount,amount};
                    model1.addRow(rows);
                }
            }
        });
        Qnty.setBounds(469, 5, 89, 34);
        Qnty.setFont(new Font("Georgia", Font.BOLD, 15));
        Qnty.getDocument().addDocumentListener(new DocumentListener()
        {
            @Override
            public void changedUpdate(DocumentEvent arg0) {
                AmountCalculate();
            }
            @Override
            public void insertUpdate(DocumentEvent arg0) {
                AmountCalculate();
            }
            @Override
            public void removeUpdate(DocumentEvent arg0) {  
            }
        }); 
        Qnty.setColumns(10);
        panel_2.add(Qnty);

        UnitPrice = new JTextField();
        UnitPrice.setBounds(561, 5, 122, 34);
        UnitPrice.setFont(new Font("Georgia", Font.BOLD, 15));
        UnitPrice.setColumns(10);
        panel_2.add(UnitPrice);

        Tax = new JTextField();
        Tax.setBounds(687, 5, 89, 34);
        Tax.setFont(new Font("Georgia", Font.BOLD, 15));
        Tax.setColumns(10);
        panel_2.add(Tax);

        Discount = new JTextField();
        Discount.setBounds(778, 5, 89, 34);
        Discount.setFont(new Font("Georgia", Font.BOLD, 15));
        Discount.setColumns(10);
        panel_2.add(Discount);

        Amount = new JTextField();
        Amount.setBounds(869, 5, 122, 34);
        Amount.setFont(new Font("Georgia", Font.BOLD, 15));
        Amount.setColumns(10);
        panel_2.add(Amount);

        scrollPane = new JScrollPane();
        scrollPane.setBounds(10, 156, 997, 412);
        panel.add(scrollPane);

        table_2 = new JTable();
        table_2.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                if(e.getKeyCode()==KeyEvent.VK_ENTER)
                {
                    try
                    {
                    int row=table_2.getSelectedRow();
                    String TableClicked=(table_2.getModel().getValueAt(row, 0).toString());
                    query="Select * from StockEntry where Item_No='"+TableClicked+"'";
                    PStat=con.prepareStatement(query);
                    res=PStat.executeQuery();

                    if(res.next())
                    {
                        String Itemno=res.getString("Item_No");
                        ItemID.setText(Itemno);
                        String itemName=res.getString("Item_Name");
                        ItemName.setText(itemName);
                        String PurchaseRate=Double.toString(res.getDouble("Unit_Price"));
                        UnitPrice.setText(PurchaseRate);
                        String stock=Double.toString(res.getDouble("Current_Stock"));
                        Stock.setText(stock);
                        String tax=Double.toString(res.getDouble("Tax"));
                        Tax.setText(tax);
                        String disc=Double.toString(res.getDouble("Discount"));
                        Discount.setText(disc);
                    }
                    }
                    catch(Exception e1)
                    {
                        e1.printStackTrace();
                    }
                    finally
                    {
                        try
                        {
                            PStat.close();
                            res.close();
                        }
                        catch(Exception e2)
                        {
                            e2.printStackTrace();
                        }
                    }
                    while(table_2.getRowCount()>0)
                    {
                        model.removeRow(0);
                    }
                    Qnty.requestFocus();
                }
            }
        });
        model=(DefaultTableModel)table_2.getModel();
        model.addColumn("Item ID");
        model.addColumn("Item Name");
        model.addColumn("Qnty");
        model.addColumn("Unit Price");
        model.addColumn("Tax (%)");
        model.addColumn("Discount (%)");
        model.addColumn("Amount");
        table_2.setRowHeight(30);
        table_2.getTableHeader().setFont(new Font("Georgia", Font.BOLD, 14));
        table_2.setFont(new Font("Georgia", Font.BOLD, 17));
        scrollPane.setViewportView(table_2);

        JScrollPane scrollPane_1 = new JScrollPane();
        scrollPane_1.setBounds(10, 156, 997, 412);
        panel.add(scrollPane_1);

        table = new JTable();
        model1=(DefaultTableModel)table.getModel();
        model1.addColumn("Item ID");
        model1.addColumn("Item Name");
        model1.addColumn("Qnty");
        model1.addColumn("Unit Price");
        model1.addColumn("Tax (%)");
        model1.addColumn("Discount (%)");
        model1.addColumn("Amount");
        table.setRowHeight(30);
        table.setFont(new Font("Georgia", Font.BOLD, 17));
        scrollPane_1.setViewportView(table);

        frame.getContentPane().setLayout(groupLayout);
    }
}

0 个答案:

没有答案