简体   繁体   English

如何在从 JTextField 输入到数组列表的每个名称旁边添加 JCheckBox?

[英]How do I add JCheckBox next to each name that has been entered into an arraylist from a JTextField?

I am creating a ManageUsers GUI which will look like this:我正在创建一个 ManageUsers GUI,它看起来像这样:

在此处输入图片说明

I want the checkboxes to go next to the names in a list that were entered from the Add New User section.我希望复选框位于从“添加新用户”部分输入的列表中的名称旁边。 I know that most of it is not done but Here's what i have so far:我知道大部分都没有完成,但这是我到目前为止所拥有的:

AddUsers添加用户

public class AddUsers {

   private String userName;

   public AddUsers(String userName) {
      this.userName = userName;
   }

   public AddUsers() {
      userName = "";
   }   

   public void setUserName(String userName) {
      this.userName = userName;   
   }

   public String getUserName() {
      return userName;
   }

   public String toString() {
      return userName + "\n";
   }

}      

ManageUsersGUI管理用户GUI

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.awt.TextField;


public class ManageUsersGUI1 extends JPanel {
    public static ArrayList<AddUsers> users = new ArrayList<>();

    private JLabel addNewUserLabel;
    private JTextField addNewUserTextField;
    private JLabel deleteUsersLabel;
    private JCheckBox jcomp4;
    private JCheckBox jcomp5;
    private JCheckBox jcomp6;
    private JButton addButton;
    private JButton deleteButton;

    public ManageUsersGUI1() {         
        //construct components
        addNewUserLabel = new JLabel ("Add new User here:");
        addNewUserTextField = new JTextField (0);
        deleteUsersLabel = new JLabel ("Select which User(s) you would like to delete:");
        jcomp4 = new JCheckBox ("newCheckBox");
        jcomp5 = new JCheckBox ("newCheckBox");
        jcomp6 = new JCheckBox ("newCheckBox");
        addButton = new JButton ("Add");
        deleteButton = new JButton ("Delete");

        //set components properties
        addNewUserTextField.setToolTipText ("Enter name and click on Add button.");
        addButton.setToolTipText ("Click here to Add new user.");
        deleteButton.setToolTipText ("Click here to delete User(s) selected.");

        //adjust size and set layout
        setPreferredSize (new Dimension (580, 485));
        setLayout (null);

        //add components
        add (addNewUserLabel);
        add (addNewUserTextField);
        add (deleteUsersLabel);
        add (jcomp4);
        add (jcomp5);
        add (jcomp6);
        add (addButton);
        add (deleteButton);

        //set component bounds (only needed by Absolute Positioning)
        addNewUserLabel.setBounds (85, 130, 120, 25);
        addNewUserTextField.setBounds (235, 130, 125, 25);
        deleteUsersLabel.setBounds (135, 225, 281, 25);
        jcomp4.setBounds (225, 270, 140, 25);
        jcomp5.setBounds (225, 300, 140, 25);
        jcomp6.setBounds (225, 330, 140, 25);
        addButton.setBounds (385, 130, 100, 25);
        deleteButton.setBounds (230, 410, 100, 25);

        addButton.addActionListener(new AddButtonListener());

    }

    private class AddButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
           String text = addNewUserTextField.getText();
           users.add(new AddUsers(text));

           // Display the charges.
           JOptionPane.showMessageDialog(null, text + " has been added.");
        }
   }


    public static void main (String[] args) {
        JFrame frame = new JFrame ("AddUsersPanel1");
        frame.setTitle("Manage Users");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add (new ManageUsersGUI1());
        frame.pack();
        frame.setVisible (true);
    }
}

You could use a JPanel with BoxLayout as the layout manager.您可以使用带有BoxLayoutJPanel作为布局管理器。

That way, for each new name entered in the JTextField , you can add a new JCheckBox to the JPanel and it automatically lists lays them out in order vertically.这样,对于在JTextField输入的每个新名称,您可以向JPanel添加一个新的JCheckBox ,它会自动按垂直顺序列出它们。

I've made some modifications to your code to exemplify, so you can adjust to your needs:我对您的代码进行了一些修改以作为示例,因此您可以根据自己的需要进行调整:

public class ManageUsersGUI1 extends JPanel {
    public static ArrayList<AddUsers> users = new ArrayList<>();

    private JLabel addNewUserLabel;
    private JTextField addNewUserTextField;
    private JLabel deleteUsersLabel;
    private JButton addButton;
    private JButton deleteButton;
    private JPanel namePanel;

    public ManageUsersGUI1() {
        //construct components
        addNewUserLabel = new JLabel ("Add new User here:");
        addNewUserTextField = new JTextField (0);
        deleteUsersLabel = new JLabel ("Select which User(s) you would like to delete:");
        addButton = new JButton ("Add");
        deleteButton = new JButton ("Delete");
        namePanel = new JPanel();
        namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.Y_AXIS));

        //set components properties
        addNewUserTextField.setToolTipText ("Enter name and click on Add button.");
        addButton.setToolTipText ("Click here to Add new user.");
        deleteButton.setToolTipText ("Click here to delete User(s) selected.");

        //adjust size and set layout
        setPreferredSize (new Dimension (580, 485));
        setLayout (null);

        //add components
        add (addNewUserLabel);
        add (addNewUserTextField);
        add (deleteUsersLabel);
        add (namePanel);
        add (addButton);
        add (deleteButton);

        //set component bounds (only needed by Absolute Positioning)
        addNewUserLabel.setBounds (85, 130, 120, 25);
        addNewUserTextField.setBounds (235, 130, 125, 25);
        deleteUsersLabel.setBounds (135, 225, 281, 25);
        addButton.setBounds (385, 130, 100, 25);
        namePanel.setBounds(225, 270, 140, 0);
        deleteButton.setBounds (230, 335, 100, 25);

        addButton.addActionListener(new AddButtonListener());

    }

    private class AddButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String text = addNewUserTextField.getText();
            users.add(new AddUsers(text));

            // Display the charges.
            JOptionPane.showMessageDialog(null, text + " has been added.");

            JCheckBox nameCheckBox = new JCheckBox();
            nameCheckBox.setText(addNewUserTextField.getText());
            namePanel.add(nameCheckBox);
            namePanel.setBounds(225, 270, 140, namePanel.getHeight() + 25);
            deleteButton.setBounds(230, deleteButton.getY() + 25, 100, 25);
            JFrame frame = (JFrame) getRootPane().getParent();
            frame.setSize(frame.getWidth(), frame.getHeight() + 25);
            frame.pack();
        }
    }


    public static void main (String[] args) {
        JFrame frame = new JFrame ("AddUsersPanel1");
        frame.setTitle("Manage Users");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add (new ManageUsersGUI1());
        frame.pack();
        frame.setVisible (true);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将JTextField和JCheckBox添加到ArrayList对象 - How to Add JTextField & JCheckBox to ArrayList Object 如果先前的JTextField中已经​​有数字,如何将从JButton输入的数字放入下一个JTextfield - How to place a number entered from a JButton into next JTextfield if previous JTextField already has a number in it 输入JTextField后如何实时检查异常 - How can I real time check for exceptions after JTextField has been entered 如何将 ActionListener 添加到 JCheckBox? - How do I add an ActionListener to a JCheckBox? 如何将用户输入从 JTextfield 添加到文本文件 - How do I add user input from JTextfield to Text file 如何通过添加布尔列将JCheckBox添加到DefaultTableModel? - How do I add a JCheckBox to DefaultTableModel by adding a Boolean column? 如何根据 JCheckBox 的状态启用/禁用我的 JTextField? - How can I enable/disable my JTextField depending of the state of a JCheckBox? 如何从一个类中的JtextField输入到另一个类中的ArrayList的输入。 爪哇 - How do I get input from a JtextField in one class to an ArrayList in another class. Java 如何将jtextfield值添加到构造函数和arraylist? - How to add jtextfield values to a constructor and an arraylist? 如何用 JTextField 信息替换选中的 JCheckbox - How to replace checked JCheckbox with the JTextField info
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM