Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值从JTextFied添加到JTable 公共类BillDetailsPanel实现ActionListener{ JPanel小组; int标志=0; JLabel lItemName、lPrice、lQty、ltax、lDisPrice; JTextField价格、数量、税金、差价; JComboBox项目名称; String[]bookTitles=新字符串[]{“有效Java”,“首字母优先Java”, “用Java思考”、“Java为傻瓜”}; JButton addBtn 公共BillDetailsPanel(){ panel=新的JPanel(); 面板设置首选尺寸(新尺寸(900,50)); FlowLayout布局=新的FlowLayout(FlowLayout.CENTER,5,15); 面板设置布局(布局); //面板.立根背景(颜色.绿色); lItemName=新的JLabel(“项目名称”); lPrice=新的JLabel(“价格”); lQty=新JLabel(“数量”); ltax=新的JLabel(“税”); lDisPrice=新的JLabel(“折扣价”); itemName=新JComboBox(书名); itemName.addActionListener(此); 价格=新的JTextField(8); //price.setEditable(false); 数量=新的JTextField(4); tax=新的JTextField(5); //tax.setedible(false); disPrice=新的JTextField(8); addBtn=新按钮(“添加”); addBtn.addActionListener(此); panel.add(lItemName); 面板。添加(项目名称); 面板。添加(lPrice); 面板。添加(价格); 面板添加(lQty); 面板添加(数量); 面板。添加(ltax); 小组.增列(税务); 面板。添加(lDisPrice); 面板。添加(disPrice); 面板。添加(addBtn); 面板设置可见(真); } 已执行的公共无效操作(操作事件e){ BillTablePanel btp=新的BillTablePanel(); 字符串[]数据=新字符串[5]; 数据[0]=(字符串)itemName.getSelectedItem(); 数据[1]=price.getText(); 数据[2]=数量getText(); 数据[3]=tax.getText(); 数据[4]=数量getText(); btp.model.addRow(数据); btp.model.addRow(数据); System.out.println(数据+“dataaaaaaaaaaaaaaa”); } } } 公共类BillTablePanel实现ActionListener{ 公共JPanel小组; 公共JTable表; 公共JScrollPane滚动窗格,滚动窗格1; 公共模型; 公共INTA=10; 字符串[]数据=新字符串[5]; 公众看板(){ panel=新的JPanel(); panel.setLayout(空); 模型=新的DefaultTableModel(); 字符串columnNames[]={“项目名称”、“实际价格”、“数量”、“税费”, “价格”}; table=新的JTable(); model.setColumnIdentifiers(columnNames); 表2.setModel(model); 表1.setFocusable(假); scrollPane=新的JScrollPane(表); 滚动窗格.设置边界(0,0,850,100); panel.add(滚动窗格); } 公共类TestClassFrame{ jf框架; BillDetailsPanel bill=新BillDetailsPanel(); BillTablePanel BillTablePanel=新的BillTablePanel(); 公共TestClassFrame(){ f=新JFrame(“Zeon系统”); f、 setLayout(空); 仪表板立根(0,0,900,100); f、 增加(法案委员会); billTablePanel.panel.setBounds(0100900500); f、 添加(billTablePanel.panel); f、 包装(); f、 设置大小(900550); f、 setVisible(真); f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 公共静态void main(字符串[]args){ 新的TestClassFrame(); } }_Java_Swing_Jtable_Jbutton_Actionlistener - Fatal编程技术网

将值从JTextFied添加到JTable 公共类BillDetailsPanel实现ActionListener{ JPanel小组; int标志=0; JLabel lItemName、lPrice、lQty、ltax、lDisPrice; JTextField价格、数量、税金、差价; JComboBox项目名称; String[]bookTitles=新字符串[]{“有效Java”,“首字母优先Java”, “用Java思考”、“Java为傻瓜”}; JButton addBtn 公共BillDetailsPanel(){ panel=新的JPanel(); 面板设置首选尺寸(新尺寸(900,50)); FlowLayout布局=新的FlowLayout(FlowLayout.CENTER,5,15); 面板设置布局(布局); //面板.立根背景(颜色.绿色); lItemName=新的JLabel(“项目名称”); lPrice=新的JLabel(“价格”); lQty=新JLabel(“数量”); ltax=新的JLabel(“税”); lDisPrice=新的JLabel(“折扣价”); itemName=新JComboBox(书名); itemName.addActionListener(此); 价格=新的JTextField(8); //price.setEditable(false); 数量=新的JTextField(4); tax=新的JTextField(5); //tax.setedible(false); disPrice=新的JTextField(8); addBtn=新按钮(“添加”); addBtn.addActionListener(此); panel.add(lItemName); 面板。添加(项目名称); 面板。添加(lPrice); 面板。添加(价格); 面板添加(lQty); 面板添加(数量); 面板。添加(ltax); 小组.增列(税务); 面板。添加(lDisPrice); 面板。添加(disPrice); 面板。添加(addBtn); 面板设置可见(真); } 已执行的公共无效操作(操作事件e){ BillTablePanel btp=新的BillTablePanel(); 字符串[]数据=新字符串[5]; 数据[0]=(字符串)itemName.getSelectedItem(); 数据[1]=price.getText(); 数据[2]=数量getText(); 数据[3]=tax.getText(); 数据[4]=数量getText(); btp.model.addRow(数据); btp.model.addRow(数据); System.out.println(数据+“dataaaaaaaaaaaaaaa”); } } } 公共类BillTablePanel实现ActionListener{ 公共JPanel小组; 公共JTable表; 公共JScrollPane滚动窗格,滚动窗格1; 公共模型; 公共INTA=10; 字符串[]数据=新字符串[5]; 公众看板(){ panel=新的JPanel(); panel.setLayout(空); 模型=新的DefaultTableModel(); 字符串columnNames[]={“项目名称”、“实际价格”、“数量”、“税费”, “价格”}; table=新的JTable(); model.setColumnIdentifiers(columnNames); 表2.setModel(model); 表1.setFocusable(假); scrollPane=新的JScrollPane(表); 滚动窗格.设置边界(0,0,850,100); panel.add(滚动窗格); } 公共类TestClassFrame{ jf框架; BillDetailsPanel bill=新BillDetailsPanel(); BillTablePanel BillTablePanel=新的BillTablePanel(); 公共TestClassFrame(){ f=新JFrame(“Zeon系统”); f、 setLayout(空); 仪表板立根(0,0,900,100); f、 增加(法案委员会); billTablePanel.panel.setBounds(0100900500); f、 添加(billTablePanel.panel); f、 包装(); f、 设置大小(900550); f、 setVisible(真); f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 公共静态void main(字符串[]args){ 新的TestClassFrame(); } }

将值从JTextFied添加到JTable 公共类BillDetailsPanel实现ActionListener{ JPanel小组; int标志=0; JLabel lItemName、lPrice、lQty、ltax、lDisPrice; JTextField价格、数量、税金、差价; JComboBox项目名称; String[]bookTitles=新字符串[]{“有效Java”,“首字母优先Java”, “用Java思考”、“Java为傻瓜”}; JButton addBtn 公共BillDetailsPanel(){ panel=新的JPanel(); 面板设置首选尺寸(新尺寸(900,50)); FlowLayout布局=新的FlowLayout(FlowLayout.CENTER,5,15); 面板设置布局(布局); //面板.立根背景(颜色.绿色); lItemName=新的JLabel(“项目名称”); lPrice=新的JLabel(“价格”); lQty=新JLabel(“数量”); ltax=新的JLabel(“税”); lDisPrice=新的JLabel(“折扣价”); itemName=新JComboBox(书名); itemName.addActionListener(此); 价格=新的JTextField(8); //price.setEditable(false); 数量=新的JTextField(4); tax=新的JTextField(5); //tax.setedible(false); disPrice=新的JTextField(8); addBtn=新按钮(“添加”); addBtn.addActionListener(此); panel.add(lItemName); 面板。添加(项目名称); 面板。添加(lPrice); 面板。添加(价格); 面板添加(lQty); 面板添加(数量); 面板。添加(ltax); 小组.增列(税务); 面板。添加(lDisPrice); 面板。添加(disPrice); 面板。添加(addBtn); 面板设置可见(真); } 已执行的公共无效操作(操作事件e){ BillTablePanel btp=新的BillTablePanel(); 字符串[]数据=新字符串[5]; 数据[0]=(字符串)itemName.getSelectedItem(); 数据[1]=price.getText(); 数据[2]=数量getText(); 数据[3]=tax.getText(); 数据[4]=数量getText(); btp.model.addRow(数据); btp.model.addRow(数据); System.out.println(数据+“dataaaaaaaaaaaaaaa”); } } } 公共类BillTablePanel实现ActionListener{ 公共JPanel小组; 公共JTable表; 公共JScrollPane滚动窗格,滚动窗格1; 公共模型; 公共INTA=10; 字符串[]数据=新字符串[5]; 公众看板(){ panel=新的JPanel(); panel.setLayout(空); 模型=新的DefaultTableModel(); 字符串columnNames[]={“项目名称”、“实际价格”、“数量”、“税费”, “价格”}; table=新的JTable(); model.setColumnIdentifiers(columnNames); 表2.setModel(model); 表1.setFocusable(假); scrollPane=新的JScrollPane(表); 滚动窗格.设置边界(0,0,850,100); panel.add(滚动窗格); } 公共类TestClassFrame{ jf框架; BillDetailsPanel bill=新BillDetailsPanel(); BillTablePanel BillTablePanel=新的BillTablePanel(); 公共TestClassFrame(){ f=新JFrame(“Zeon系统”); f、 setLayout(空); 仪表板立根(0,0,900,100); f、 增加(法案委员会); billTablePanel.panel.setBounds(0100900500); f、 添加(billTablePanel.panel); f、 包装(); f、 设置大小(900550); f、 setVisible(真); f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 公共静态void main(字符串[]args){ 新的TestClassFrame(); } },java,swing,jtable,jbutton,actionlistener,Java,Swing,Jtable,Jbutton,Actionlistener,此代码的问题是Bill detais类包含一些文本框和按钮BillTablepane类包含Jtable我想将BillDetaisaPanel中的项目添加到Jtable 单击未显示任何错误但未插入值的Jbutton时 完整来源是否有人请帮助我查找逻辑错误,在您的actionPerformed方法中,您正在第(1)行创建一个新的BillTablePanel对象,然后尝试在第(2)行添加到表模型: 但是要理解,新的BillTablePanel只是一个全新的、不同的对象,一个与显示的对象完全无关的对象。

此代码的问题是Bill detais类包含一些文本框和按钮BillTablepane类包含Jtable我想将BillDetaisaPanel中的项目添加到Jtable

单击未显示任何错误但未插入值的Jbutton时


完整来源是否有人请帮助我查找逻辑错误,

在您的actionPerformed方法中,您正在第(1)行创建一个新的BillTablePanel对象,然后尝试在第(2)行添加到表模型:

但是要理解,新的BillTablePanel只是一个全新的、不同的对象,一个与显示的对象完全无关的对象。要更改显示数据的状态,必须对显示的BillTablePanel对象调用方法,而不是对仅为actionPerformed方法创建的新对象调用方法

例如,这里有一个类似的最小程序:

public void actionPerformed(ActionEvent e) {

    BillTablePanel btp=new BillTablePanel();  // **** (1)
    // ...

    btp.model.addRow(data);  // ***** (2)
您的程序创建一个新的未显示的对象,并更改其属性,类似于上面我的程序中的代码:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class TableExample extends JPanel {
    private HoldsTable holdsTable = new HoldsTable();
    private JTextField lastNameField = new JTextField(10);
    private JTextField firstNameField = new JTextField(10); 

    public TableExample() {
        JPanel fieldPanel = new JPanel();
        fieldPanel.add(new JLabel("Last Name:"));
        fieldPanel.add(lastNameField);
        fieldPanel.add(new JLabel("First Name:"));
        fieldPanel.add(firstNameField);

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(new JButton(new AbstractAction("Your Action") {

            @Override
            public void actionPerformed(ActionEvent evt) {
                HoldsTable ht = new HoldsTable(); // creates a new reference -- bad!
                String lastName = lastNameField.getText();
                String firstName = firstNameField.getText();

                ht.addName(lastName, firstName);
            }
        }));
        buttonPanel.add(new JButton(new AbstractAction("My Action") {

            @Override
            public void actionPerformed(ActionEvent evt) {
                // HoldsTable ht = new HoldsTable();
                String lastName = lastNameField.getText();
                String firstName = firstNameField.getText();

                // ht.addName(lastName, firstName);
                holdsTable.addName(lastName, firstName); // use the ref to the displayed object
            }
        }));

        setLayout(new BorderLayout());
        add(holdsTable, BorderLayout.CENTER);
        add(fieldPanel, BorderLayout.PAGE_START);
        add(buttonPanel, BorderLayout.PAGE_END);
    }

    private static void createAndShowGui() {
        TableExample mainPanel = new TableExample();

        JFrame frame = new JFrame("TableExample");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(mainPanel);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }
        });
    }
}

class HoldsTable extends JPanel {
    private static final String[] COL_NAMES = { "Last Name", "First Name" };
    private DefaultTableModel model = new DefaultTableModel(COL_NAMES, 0);
    private JTable table = new JTable(model);

    public HoldsTable() {
        setLayout(new BorderLayout());
        add(new JScrollPane(table));
    }

    public void addName(String lastName, String firstName) {
        String[] row = { lastName, firstName };
        model.addRow(row);
    }
}
但由于其状态正在更改的对象(此处为
ht
),但在您的代码中,其
btp
)不是显示的对象,因此不会显示任何内容

正确的方法显示在其他操作中:

        @Override
        public void actionPerformed(ActionEvent evt) {
            HoldsTable ht = new HoldsTable(); // creates a new reference --
                                              // bad!
            String lastName = lastNameField.getText();
            String firstName = firstNameField.getText();

            ht.addName(lastName, firstName);
        }
    }));

我创建了一个保存JTable的GUI视图字段,这里是
holdsTable
,并对其调用了一个方法。由于holdsTable是可见的,其状态的变化将显示在程序中(这里是JTable).

这越来越烦人了。创建一个新的用户ID来问同一个问题,这个问题已经被问了3次。你已经被问了好几次发布SSCCE。你已经得到了关于如何创建SSCCE的建议。但是你仍然会继续转储不编译的无关代码。如果你想学会解决问题,那么你需要学会如何处理简化问题。
        @Override
        public void actionPerformed(ActionEvent evt) {
            HoldsTable ht = new HoldsTable(); // creates a new reference --
                                              // bad!
            String lastName = lastNameField.getText();
            String firstName = firstNameField.getText();

            ht.addName(lastName, firstName);
        }
    }));
        @Override
        public void actionPerformed(ActionEvent evt) {
            // HoldsTable ht = new HoldsTable();
            String lastName = lastNameField.getText();
            String firstName = firstNameField.getText();

            // ht.addName(lastName, firstName);
            holdsTable.addName(lastName, firstName); // use the ref to the
                                                     // displayed object
        }