java - 单击 JButton 添加新的 JTextField

标签 java jbutton addition textfield jtextfield

我正在开发发票系统,我想在每次单击“添加新”按钮时创建新字段。

每次都需要添加下面代码中的字段。

这些字段需要显示在其各自的列下。

    JPanel panel_2 = new JPanel();
    panel_2.setBounds(10, 256, 990, 303);
    panel.add(panel_2);
    panel_2.setLayout(null);

    code = new JTextField();
    code.setBounds(10, 11, 86, 20);
    panel_2.add(code);
    code.setColumns(10);
    code.setEditable(false);

    desc = new JTextField();
    desc.setBounds(106, 11, 345, 20);
    panel_2.add(desc);
    desc.setColumns(10);
    desc.setEditable(false);

    quantity = new JTextField("0");
    quantity.setBounds(461, 11, 86, 20);
    panel_2.add(quantity);
    quantity.setColumns(10);
    quantity.setEditable(false);

    price = new JTextField("0");
    price.setBounds(557, 11, 106, 20);
    panel_2.add(price);
    price.setColumns(10);
    price.setEditable(false);

    individualTotal = new JTextField();
    individualTotal.setBounds(673, 11, 106, 20);
    panel_2.add(individualTotal);
    individualTotal.setColumns(10);
    individualTotal.setEditable(false);

下面是我设置的按钮:

    JButton newEntry = new JButton("+");
    newEntry.setBackground(Color.PINK);
    newEntry.setForeground(Color.BLUE);
    newEntry.setFont(new Font("Tahoma", Font.BOLD, 15));
    newEntry.setBounds(10, 204, 57, 20);
    panel.add(newEntry);
    newEntry.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            code.setEditable(true);
            desc.setEditable(true);
            quantity.setEditable(true);
            price.setEditable(true);
            individualTotal.setEditable(true);
          } 
    });
    newEntry.setEnabled(false);

    JButton minusEntry = new JButton("-");
    minusEntry.setBackground(Color.PINK);
    minusEntry.setForeground(Color.RED);
    minusEntry.setFont(new Font("Wide Latin", Font.BOLD, 16));
    minusEntry.setBounds(77, 205, 57, 20);
    panel.add(minusEntry);
    minusEntry.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            code.setEditable(false);
            desc.setEditable(false);
            quantity.setEditable(false);
            price.setEditable(false);
            individualTotal.setEditable(false);
        } 
    });
    minusEntry.setEnabled(false);

我知道这个网站上一定有答案,但我似乎找不到它。

另请注意,我是 Java 开发新手

最佳答案

创建您自己的 JPanel 子类,它代表一个“数据表”或表格单元格或其他内容

public DataPanel extends JPanel{


   private JTextField field1 = new JTextField();
   private JTextField field2 = new JTextField();
   // ..... and so on

   public DataPanel(YourDataObject data){
     field1.setText(data.getValue1());
     field2.setText(data.getValue2());
     // ... and so on
     // then add all of your text fields to the panel
     add(field1);
     add(field2);
     // .... and so on
   }
}

然后单击按钮,将面板添加到要显示它的组件

onClick(SomeEvent event){
  yourComponent.add(new DataPanel(yourDataObject));
}

关于java - 单击 JButton 添加新的 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561432/

相关文章:

Java方法重载 - 同一继承树中的通用参数和参数

java - 使用找到的模式从 Java 正则表达式匹配器获取 NULL 值

java - 从java启动一个exe

c# mysql - 当描述相同时添加库存值和新条目

java - 编写一个程序,询问产品代码,产品数量并汇总所有价格

java - 将 JButtons 对齐在嵌套 JPanel 的中心 (BoxLayout)

java - 在java swing中单击按钮后无法立即将按钮文本更改为图标

java - 如何更改 JOptionPane 中的按钮背景

c++ - 打印一系列数字优化第 1 部分

winforms - winforms 文本框内的按钮 vb.net