java如何实现两个表的部分数据传递

不懂得如何通过选择按钮实现左表到有表的部分传递,清空列表这个按钮不懂怎么实现如何清空右表的数据。如果可以的话,可以有代码,如果不可以就算了。

img


{
    xiaoshouzdao ed = new xiaoshouzdao();
    DefaultTableModel model,model1;
    JTable table,table1;
    JTextField  textField2;
    JButton query,tuihuang,choice,end,qinkong;
    JScrollPane jsp, jsp1;
    JComboBox JC=new JComboBox();
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    xiaoshouz frame = new xiaoshouz();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    public xiaoshouz() {
        setLayout(null);
        this.setBounds(350, 300, 660, 500);
        this.setVisible(true);
        JC.addItem("药品编号");
        JC.addItem("药品名称");
        JC.setBounds(280, 20, 100, 30);
        textField2 = new JTextField();
        textField2.setBounds(380, 20, 80, 30);
        add(JC);
        add(textField2);
        query = new JButton("查询");
        tuihuang=new JButton("退换药品");
        choice=new JButton("选择");
        end=new JButton("结算");
        qinkong=new JButton("清空列表");
        add(choice);
        add(end);
        add(qinkong);
        query.setBounds(500, 20, 80, 30);
        tuihuang.setBounds(580,20,80,30);
        choice.setBounds(480,100,60,20);
        end.setBounds(800,490,100,40);
        qinkong.setBounds(530,490,80,30);

        add(query);
        add(tuihuang);

        Icon chaxun = new ImageIcon("C://Users//anyone//wqlidea//yp//tubiao/查询.png");
        query.setIcon(chaxun);

        Vector> vData=ed.selectALL();
        getModel(vData);
        table = new JTable(model);
         jsp = new JScrollPane(table);
        jsp.setBounds(0, 50, 480, 400);
        add(jsp);



        jsp1=new JScrollPane(table1);
        String[]columnNames={"药品编号","药品名称","售价/元","数量/件"};
        String[][]tableValues={};
        model1=new DefaultTableModel(tableValues,columnNames);
        table1=new JTable(model1);
        jsp1=new JScrollPane(table1);
        jsp1.setBounds(540,50,400,400);
        add(jsp1);




        query.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                if(JC.getSelectedItem().toString().equals("药品编号")){
                    String rid = textField2.getText();
                    getModel(ed.selectname1(rid));
                }
                if(JC.getSelectedItem().toString().equals("药品名称")){
                    String eid=textField2.getText();
                    getModel(ed.selectname(eid));

                }
            }
        });

        choice.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                
            }
        });
        
        qinkong.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                
            }
        });



    }

    private void getModel (Vector < Vector < String >> vData) {
        Vector vHead = new Vector();
        vHead.add("药品编号");
        vHead.add("药品名称");
        vHead.add("药品类别");
        vHead.add("生厂厂家");
        vHead.add("售价/元");
        vHead.add("剩余数量/件");
        if (model == null) {
            model = new DefaultTableModel(vData, vHead);
        } else {
            model.setDataVector(vData, vHead);
        }


    }

}

回答:这是JTable的使用部分,实际实现并不难,但是你这里代码没给全,我没办法在你这个例子上进行代码补全;
它是一个对DefaultTableModel的操作,只是一些函数的调用,如果你给到你这个项目目前效果可以运行的代码,实现你的功能是非常简单的;所以如果你想实现的话,就把这个示例的完整代码给一下
参考文章:https://blog.csdn.net/qq_59001784/article/details/125122697

完整代码发一下,给你调试。


int count=table.getSelectedRow();//获取你选中的行号(记录)
String getname= table.getValueAt(count, 1).toString();//读取你获取行号的某一列的值(也就是字段)

首先,需要使用 DefaultTableModel 定义两个 JTable 对应的表格模型,分别为 model 和 model1。右表的列名可以定义为:"药品编号"、"药品名称"、"售价/元"、"数量/件"。两个表的 JScrollPane 分别为 jsp 和 jsp1。

选择按钮的实现方法是在左表的选中的行的数据被添加到右表的模型中,然后右表的模型通过 JTable 关联的 JScrollPane 进行显示。

清空按钮的实现方法是调用右表模型的 setRowCount(0) 方法,它可以清除右表中所有数据。

具体代码:

choice.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int[] selectedRows = table.getSelectedRows();
for (int i = 0; i < selectedRows.length; i++) {
Vector rowData = new Vector();
rowData.add(table.getValueAt(selectedRows[i], 0).toString());
rowData.add(table.getValueAt(selectedRows[i], 1).toString());
rowData.add(table.getValueAt(selectedRows[i], 2).toString());
rowData.add("1");
model1.addRow(rowData);
}
}
});

qinkong.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
model1.setRowCount(0);
}
});

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632