如何从 Jpanel 中的 JTextField 获取值并将其发送到其他 JPanel?

Posted

技术标签:

【中文标题】如何从 Jpanel 中的 JTextField 获取值并将其发送到其他 JPanel?【英文标题】:How to get value from JTextField in Jpanel and send it to other JPanel? 【发布时间】:2022-01-10 09:12:26 【问题描述】:

我正在为简单的信息管理程序编写代码。我在 Java swing Gui 中遇到了麻烦。在这段代码中,我计划将 Northpanel_center 中的 JTextField 字符串用于 Northpanel_east。但我不能使用它。

class Northpanel_Center extends JPanel 
public Northpanel_Center() 
    String[] updown = "이상", "이하";
    setLayout(new FlowLayout(FlowLayout.LEFT, 4, 4));
    add(new JLabel("   이름   "));
    JTextField name = new JTextField(15);
    add(name);
    add(new JLabel("           "));
    add(new JLabel("팔로워수"));
    JTextField followers = new JTextField(15);
    add(followers);
    JComboBox<String> ud1 = new JComboBox<String>(updown);
    add(ud1);
    add(new JLabel("광고비용"));
    JTextField paid = new JTextField(15);
    add(paid);
    JComboBox<String> ud2 = new JComboBox<String>(updown);
    add(ud2);
    add(new JLabel("광고횟수"));
    JTextField times = new JTextField(15);
    add(times);
    JComboBox<String> ud3 = new JComboBox<String>(updown);
    add(ud3);
    //make a new String with JTextField
    String[] information = new String[4];
    String[] bound = new String[3];
    information[0] = name.getText();
    information[1] = followers.getText();
    information[2] = paid.getText();
    information[3] = times.getText();
    bound[0] = ud1.getSelectedItem().toString();
    bound[1] = ud2.getSelectedItem().toString();
    bound[2] = ud3.getSelectedItem().toString();
    

我想在Jpanel下面使用上面的String[],有Actionlistener。 因此,当我单击按钮时,调用使用上述字符串作为参数的“搜索”方法。

class Northpanel_East extends JPanel 
public Northpanel_East() 
    setLayout(new GridLayout(2, 1, 2, 2));
    JButton searchBtn = new JButton("조회");
    searchBtn.addActionListener(new ActionListener() 
        @Override
        public void actionPerformed(ActionEvent e) 
            Search.searching() // cannot use above String[]
                    
        
    );

添加,搜索方法是这样的。

public ArrayList<Influencer> searching(String[] information, String[] bound) 
    searchedList = new ArrayList<>();

    if (!(information[0].equals(""))) 
        searchByName(information[0]);
    
    else if (!information[1].equals("")) 
        searchByFollower(Integer.parseInt(information[1]), bound[0]);
    
    else if (!information[2].equals("")) 
        searchByCost(Integer.parseInt(information[2]), bound[1]);
    
    else if (!information[3].equals("")) 
        searchByChanceOfAdvertise(Integer.parseInt(information[3]), bound[2]);
    
    else 
        searchedList = listOfInfluencer;
    

    return searchedList;

【问题讨论】:

【参考方案1】:

您正在处理一个事件驱动的环境,发生了一些事情,然后您对其做出响应。这意味着在未来的某个时候,您需要访问这些信息。

一种方法是使用计算属性,当调用该属性时,计算其结果,而不是预先定义它们。

class Northpanel_Center extends JPanel 

    private JTextField name;
    private JTextField followers;
    private JComboBox<String> ud1;
    private JTextField paid;
    private JComboBox<String> ud2;
    private JTextField times;
    private JComboBox<String> ud3;

    public Northpanel_Center() 
        String[] updown = "이상", "이하";
        setLayout(new FlowLayout(FlowLayout.LEFT, 4, 4));
        add(new JLabel("   이름   "));
        name = new JTextField(15);
        add(name);
        add(new JLabel("           "));
        add(new JLabel("팔로워수"));
        followers = new JTextField(15);
        add(followers);
        ud1 = new JComboBox<String>(updown);
        add(ud1);
        add(new JLabel("광고비용"));
        paid = new JTextField(15);
        add(paid);
        ud2 = new JComboBox<String>(updown);
        add(ud2);
        add(new JLabel("광고횟수"));
        times = new JTextField(15);
        add(times);
        JComboBox<String> ud3 = new JComboBox<String>(updown);
        add(ud3);
    

    public String[] getInformation() 
        String[] information = new String[4];
        information[0] = name.getText();
        information[1] = followers.getText();
        information[2] = paid.getText();
        information[3] = times.getText();
        return information;
    

    public String[] getBound() 
        String[] bound = new String[3];
        bound[0] = ud1.getSelectedItem().toString();
        bound[1] = ud2.getSelectedItem().toString();
        bound[2] = ud3.getSelectedItem().toString();
        return bound;
    

【讨论】:

以上是关于如何从 Jpanel 中的 JTextField 获取值并将其发送到其他 JPanel?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 JPanel 的边距和内边距?

人品计算器 JFrame 窗体软件版 JPanel JTextField JTextArea JButtton JLabel setContentPane

java:限制swing中的JTextField只能输入中文,字母,数字。

如何从另一个 java 类中的 jTextField 或 jFormattedTextField 获取数据

GUI基础1

如何从 A 类中的 JTextField 输入向 B 类中的数据库插入值