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

📄 teaminputjframe.java

📁 世界杯足球赛统计
💻 JAVA
字号:
//13.1  输入并分类浏览参赛队信息。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.sql.*;

public class TeamInputJFrame extends JFrame implements ActionListener, ListSelectionListener
{
    private DataBaseOperation dboper;                      //操纵数据库的对象
    private String table;                                  //数据库中的表名
    private String[] columnNames;                          //指定表中所有列的中文标题
    private String list_column;                            //指定分类浏览依据的列
    private String sort_column;                            //指定排序依据的列

    private JList list_group;                              //列表框,显示分类列的不重复值
//    private DefaultListModel listModel;                    //默认列表框模式

    private JTable table_team;                             //表格组件,显示数据库中指定的内容
    private DefaultTableModel tableModel;                   //默认表格模式

    private JComboBox combobox_group;                      //组合框,选择组别
    private JTextField text_team;                          //文本行,输入参赛队名
    
    public TeamInputJFrame(DataBaseOperation dboper, String table, String[] columnNames, String list_column, String sort_column)                   //构造方法,指定表名
    {
        this.dboper = dboper;                               
        this.table = table;
        this.columnNames = columnNames;
        this.list_column = list_column;
        this.sort_column = sort_column;

        this.setSize(480,320);                                       //界面设计
        this.setLocation(300,240);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
                
        JSplitPane splitter_h = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); //分割窗格,水平分割
        this.add(splitter_h);
        JSplitPane splitter_v = new JSplitPane(JSplitPane.VERTICAL_SPLIT);   //分割窗格,垂直分割

        try
        {
            String[] groupdata = dboper.selectDistinct(table, list_column);   //获得指定列不重复的值
            this.list_group = new JList(groupdata); 

//            this.listModel = new DefaultListModel();     //默认列表框模式
 //           dboper.selectDistinct(this.table, this.list_column, this.listModel);    //获得指定列不重复的值
//            this.list_group = new JList(listModel); 
            this.list_group.setSelectedIndex(0);                     //选中第1项
            splitter_h.add(new JScrollPane(this.list_group));
            this.list_group.addListSelectionListener(this);          //注册选择事件监听器
            splitter_h.add(splitter_v);

            this.tableModel = new DefaultTableModel(columnNames,0);        //默认表格模式
            this.valueChanged(null);                                 //执行列表框的选择事件处理程序
            this.table_team = new JTable(tableModel); 
//            this.table_team.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            splitter_v.add(new JScrollPane(table_team));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        splitter_v.add(inputJPanel());
        this.setVisible(true);
    }

    private JPanel inputJPanel()
    {
        JPanel panel = new JPanel();
        
        panel.add(new JLabel("组别"));
        String[] groupdata = {"A","B","C","D","E","F","G","H"};
        combobox_group = new JComboBox(groupdata); 
        panel.add(combobox_group);
        
        panel.add(new JLabel("队名"));
        text_team = new JTextField(10);
        panel.add(text_team);
        
        JButton button_add = new JButton("添加");
        panel.add(button_add);
        button_add.addActionListener(this);
        
        return panel;
    }

    public void display(String columnValue)
    {
        String conditions="";
        if(columnValue!=null && !columnValue.equals("全部")) 
            conditions = this.list_column + " = '"+columnValue+"'";
        try
        {
            dboper.select(this.table, conditions, sort_column, this.tableModel);  //查询并显示指定组的数据结果集
        }
        catch(SQLException sqle)
        {
            sqle.printStackTrace();
        }
    }    
    
    public void valueChanged(ListSelectionEvent e)         //在列表框中选择数据项时触发
    {            //在表中查询指定组的数据,将数据结果集显示在表格组件中

        String selecteditem = (String)list_group.getSelectedValue();
        if(selecteditem!=null) 
            display(selecteditem);
    }

    public void actionPerformed(ActionEvent e)             //单击事件处理程序
    {
        if(e.getActionCommand()=="添加")                   //单击按钮时
        {
            String group1 = (String)combobox_group.getSelectedItem();
            Object group1obj = combobox_group.getSelectedItem();
            String team1 = text_team.getText();
            if (team1.equals(""))
            {
                System.out.println("队名为空,不能添加。");
                return;
            }

            try
            {
                this.list_group.setSelectedValue(group1obj,true);// ??不起作用??
                System.out.println(list_group.getSelectedIndex());
                display(group1);

                String sql = "SELECT COUNT(" +list_column +") FROM "+this.table;
                sql += " WHERE "+list_column+"='"+group1+"'";
                int count = dboper.selectCount(sql);
                if (count>=4)
                {
                    System.out.println(group1+"组已有4个队,不能再添加。");
                    return;
                }
                
                sql = "SELECT COUNT(" +list_column +") FROM "+this.table;
                sql += " WHERE "+list_column+"='"+group1+"'";
                sql += " AND team1='"+team1+"'";
                System.out.println(sql);
                count = dboper.selectCount(sql);
                if (count>=1)
                {
                    System.out.println(group1+"组已有"+team1+"队,不能再添加。");
                    return;
                }

                sql = "INSERT INTO " + this.table + " VALUES ('";    //表名
                sql += group1+"', '"+ team1+"')";                    //组别、队名列值
//                System.out.println(sql);
                int ok = dboper.dataUpdate(sql);                     //表中插入一行数据
                if (ok==1)
                {
//                    dboper.selectDistinct(this.table, this.list_column, this.listModel);    //获得指定列不重复的值
                    String[] groupdata = dboper.selectDistinct(table, list_column);   //获得指定列不重复的值
                    this.list_group.setListData(groupdata); 
                    this.list_group.setSelectedValue((Object)group1,true);//选中指定数据项 ??不起作用??
                    display(group1);
                }
            }
            catch(SQLException sqle)
            {
                sqle.printStackTrace();
            }
        }
    }

    public static void main(String args[])
    {
        String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WorldCup2006";
        try
        {
            DataBaseOperation dboper = new DataBaseOperation(driver,url,"sa","yeheya");
            String[] team_columnNames={"组别","球队"};
            TeamInputJFrame team_input = new TeamInputJFrame(dboper,"Team", team_columnNames, "group1", "group1");
            team_input.setTitle("第18届世界杯足球赛  参赛队");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

/*
        icon_jack = new ImageIcon("国旗\\jack_s_german.gif");
        JLabel label_jack = new JLabel("国旗", icon_jack, JLabel.RIGHT);
        panel.add(label_jack);



*/

⌨️ 快捷键说明

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