【Java程序设计】GUI的JTable的一些应用

主要介绍

本程序包含以下类
在这里插入图片描述

主要代码

1、<< abstract >> Train

public abstract class Train
{
    
    
    private String trainId;
    private String sourceAdd;
    private String purposeAdd;
    private String startTime;
    private String endTime;
    private String date;
    
    Train(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,String date){
    
    
        this.trainId = trainId;
        this.sourceAdd = sourceAdd;
        this.purposeAdd = purposeAdd;
        this.startTime = startTime;
        this.endTime = endTime;
        this.date = date;
    }

    String getTrainId(){
    
    
        return trainId;
    }
    String getSourceAdd(){
    
    
        return sourceAdd;
    }
    String getpurposeAdd(){
    
    
        return purposeAdd;
    }
    String getstartTime(){
    
    
        return startTime;
    }
    String getendTime(){
    
    
        return endTime;
    }
    String getDate(){
    
    
        return date;
    }
    
    abstract void setSeatPrice(double[] n);
    abstract String getSeatTypeAndPrice(int number);
    abstract int getTicketNumber(int number);
}

2、KTrain、DTrain、GTrain

KTrain

public class KTrain extends Train
{
    
    
    private String[] seatType = new String[4];
    private double[] seatPrice;
    private int[] ticketNumber;

    KTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
    
    
        super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
        this.seatPrice = seatPrice;
        this.ticketNumber = ticketNumber;
        seatType[0] = "硬座";seatType[1] = "硬卧";seatType[2] = "软卧";seatType[3] = "无座";
    }   

    void setSeatPrice(double[] seatPrice){
    
    
        this.seatPrice = seatPrice;
    }

    String getSeatTypeAndPrice(int number){
    
    
        String str = seatType[number] + "   价格:" + seatPrice[number];
        return str;
    }
    
    int getTicketNumber(int number){
    
    
        return ticketNumber[number];
    }
}

DTrain

public class DTrain extends Train
{
    
    
    private String[] seatType = new String[3];
    private double[] seatPrice;
    private int[] ticketNumber;

    DTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
    
    
        super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
        this.seatPrice = seatPrice;
        this.ticketNumber = ticketNumber;
        seatType[0] = "一等座";seatType[1] = "二等座";seatType[2] = "无座";
    }   

    void setSeatPrice(double[] seatPrice){
    
    
        this.seatPrice = seatPrice;
    }

    String getSeatTypeAndPrice(int number){
    
    
        String str = seatType[number] + "   价格:" + seatPrice[number];
        return str;
    }
    
    int getTicketNumber(int number){
    
    
        return ticketNumber[number];
    }
    
}

GTrain

public class GTrain extends Train
{
    
    
    private String[] seatType = new String[3];
    private double[] seatPrice;
    private int[] ticketNumber;

    GTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
    
    
        super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
        this.seatPrice = seatPrice;
        this.ticketNumber = ticketNumber;
        seatType[0] = "特等座";seatType[1] = "一等座";seatType[2] = "二等座";
    }   

    void setSeatPrice(double[] seatPrice){
    
    
        this.seatPrice = seatPrice;
    }

    String getSeatTypeAndPrice(int number){
    
    
        String str = seatType[number] + "   价格:" + seatPrice[number];
        return str;
    }
    
    int getTicketNumber(int number){
    
    
        return ticketNumber[number];
    }
}

3、TrainList

import java.util.*;
public class TrainList
{
    
    
    private List<Train> trainList;
    public TrainList(){
    
    
        trainList = new ArrayList<Train>();
        addSomeInfo();
    }
    
    public int getsize(){
    
    
        return trainList.size();
    }
    
    public Train getTrain(int index){
    
    
        if(index < 0 || index >= trainList.size()){
    
    
            return null;
        }
        return trainList.get(index);
    }
    
    public void addSomeInfo(){
    
    
        Train train;
        double[] DGseatPrice = new double[3];
        double[] KseatPrice = new double[4];
        int[] DGticket = new int[3];
        int[] Kticket = new int[4];

        DGseatPrice[0] = 207.0;DGseatPrice[1] = 129.5;DGseatPrice[2] = 129.5;
        DGticket[0] = 100;DGticket[1] = 876;DGticket[2] = 321;
        train = new DTrain("D1782","南宁东","桂林北","07:06","09:54",DGseatPrice,"2020-12-17",DGticket);
        trainList.add(train);

        KseatPrice[0] = 152.5;KseatPrice[1] = 261.5;KseatPrice[2] = 409.5;KseatPrice[3] = 152.5;
        Kticket[0] = 987;Kticket[1] = 200;Kticket[2] = 521;Kticket[3] = 327;
        train = new KTrain("K142","南宁","重庆西","18:15","08:54(+1)",KseatPrice,"2020-12-17",Kticket);
        trainList.add(train);

        DGseatPrice[0] = 1019;DGseatPrice[1] = 882;DGseatPrice[2] = 541.5;
        DGticket[0] = 99;DGticket[1] = 268;DGticket[2] = 827;
        train = new GTrain("G381","北京南","哈尔滨西","07:54","14:31",DGseatPrice,"2020-12-17",DGticket);
        trainList.add(train);
        
    }

}

4、CheckAllTicket

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.*;
public class CheckAllTicket extends JFrame
{
    
    
    //所需参数
    private String userName;
    private TrainList userList;
    private DefaultTableModel model = null;
    String[][] datas = new String[20][8];

    /*所需所有组件*/
    //表格
    private JTable showAllTicketTable;

    //容器
    private JPanel topTitle = new JPanel();
    private JScrollPane tablePanel;
    private JPanel bottom = new JPanel();

    //标签
    private JLabel topTitleLabel = new JLabel("所有票源");
    
    //按钮
    private JButton exitButton = new JButton("返回");
    private JButton searchButton = new JButton("搜索");
    private JButton buyButton = new JButton("购买");
    
    //构造函数
    CheckAllTicket(String userName){
    
    
        this.userName = userName;
        LoadingInterface();//加载界面
    }

    void LoadingInterface(){
    
    
        //初始化整个界面
        setTitle("查看所有票源");
        setLocation(500,300);
        setSize(850,600);
        setLayout(new GridLayout(1,1));
        
        //顶部容器初始化
        Font fnt = new Font("宋体", Font.PLAIN + Font.BOLD, 40);
        topTitleLabel.setFont(fnt);
        topTitle.setLayout(new FlowLayout());
        topTitle.add(topTitleLabel);
        add(topTitle);

        //底部表格初始化
        setdatas();//设置数据
        String[] titles = {
    
    "车次号","起始地址","目的地址","发车时间","到达时间","发车日期","座次及价格","余票","操作"};
        model = new DefaultTableModel(datas,titles);
        showAllTicketTable = new JTable(model);
        showAllTicketTable.setEnabled(false);
        int columncount = this.showAllTicketTable.getColumnCount();
        int[] length = {
    
    90,120,120,120,120,150,200,50,150};
        for(int i = 0;i < columncount;i++){
    
    
            showAllTicketTable.getColumnModel().getColumn(i).setPreferredWidth(length[i]);
        }
        showAllTicketTable.setRowHeight(30);
        
        tablePanel = new JScrollPane(showAllTicketTable){
    
    
            @Override
            public Dimension getPreferredSize(){
    
    
                return new Dimension(800,400);
            }
        };
        topTitle.add(tablePanel);
        
        //做底部的两个按钮
        topTitle.add(exitButton);
        topTitle.add(searchButton);
        
        //绑定监听事件,测试本代码可以去掉这个函数
        exitButton.addActionListener(new ActionListener(){
    
    
            public void actionPerformed(ActionEvent e){
    
    
                new TBAFM(userName);
                dispose();
            }
        });
                
        setVisible(true);       
    }
    
    void setdatas(){
    
    
        userList = new TrainList();
        int i = 0,j = 0;
        int tempnumber = i;
        for(i = 0;i < 10;i++){
    
    
            datas[i][j++] = userList.getTrain(tempnumber).getTrainId();
            datas[i][j++] = userList.getTrain(tempnumber).getSourceAdd();
            datas[i][j++] = userList.getTrain(tempnumber).getpurposeAdd();
            datas[i][j++] = userList.getTrain(tempnumber).getstartTime();
            datas[i][j++] = userList.getTrain(tempnumber).getendTime();
            datas[i][j++] = userList.getTrain(tempnumber).getDate();
            
            char tempchar = userList.getTrain(tempnumber).getTrainId().charAt(0);
            if( tempchar == 'D' || tempchar == 'G'){
    
    
                datas[i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(0);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(0));
                datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(1);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(1));
                datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(2);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(2));
            }
            else{
    
    
                datas[i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(0);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(0));
                datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(1);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(1));
                datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(2);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(2));
                datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(3);
                datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(3));
            }
            j = 0;
            tempnumber++;
        }
        /*for(i = 0;i <datas.length;i++){
            showAllTicketTable.getColumnModel().getColumn(8).setCellRenderer(new TableCellRenderer(){
                @Override
                public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
                    return buyButton;
                }
            });*/
        }
    }
}

测试结果

在这里插入图片描述

说明

主要展示的是JTable的使用,搜索等功能目前暂未实现。

猜你喜欢

转载自blog.csdn.net/passer__jw767/article/details/111303786