【问题标题】:Need help to display inputs of a Java's form on an other frame需要帮助以在其他框架上显示 Java 表单的输入
【发布时间】:2017-11-14 00:45:28
【问题描述】:

所以当我点击“显示”按钮时,我试图在表单中输入一些数据并将它们存储在数组中,但我不知道该怎么做。

这是我的表格:

import java.awt.*;
import java.awt.event.*;

public class test {
    public static void main(String[] args) {
        Frame frm=new Frame("Add employee");
        Label lbl = new Label();
        frm.add(lbl);
        frm.setSize(350,200);
        frm.setVisible(true);
        frm.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        Panel p = new Panel();
        Panel p1 = new Panel();
        Label jFirstName = new Label("first name");
        TextField lFirstName = new TextField(20);
        Label jLastName =new Label("last name");
        TextField lLastName=new TextField(20);
        Label jAge= new Label("Age");
        TextField lAge = new TextField(20);
        Label jDate =new Label("Date");
        TextField lDate=new TextField(20);
        Label jType = new Label("employee type");
        TextField lType = new TextField(20);
        p.setLayout(new GridLayout(7,1));



        p.add(jFirstName);
        p.add(lFirstName);
        p.add(jLastName);
        p.add(lLastName);
        p.add(jAge);
        p.add(lAge);
        p.add(jDate);
        p.add(lDate);
        p.add(jType);
        p.add(lType);

        Button Submit=new Button("Submit");
        p.add(Submit);
        p1.add(p);
        frm.add(p1,BorderLayout.NORTH);
    }
}

你有什么想法吗?

【问题讨论】:

  • “你有什么想法吗?” 你问的是什么,没有;如何改进?是的,您可能想研究一下 Swing 和 AWT 之间的区别
  • 所以,在多读几遍之后,您可能想读一读How to use buttonsHow to write ActionListeners
  • 开始thx会很有用
  • 只是为了补充@MadProgrammer 的明智建议。我经常提供的第一个“复制/粘贴评论”。现在就看The Use of Multiple JFrames, Good/Bad Practice?。 (由我)接受的答案涵盖了使用多个框架的一些陷阱并概述了许多替代方案。但是在这种特定情况下(其中一个框架旨在从用户那里收集信息),使用模态JDialogJOptionPane 通常会更好地处理它。开始使用最适合这项工作的工具,为自己省去很多琐碎的问题。

标签: java forms swing frame


【解决方案1】:

试试下面的代码。我从您的代码开始并对其进行了修改。我建议/指出的几件事:

考虑使用 Swing 代替 AWT(例如 JFrame 代替 Frame)。摇摆更丰富。 尝试将代码分解为单独的类,而不是在 main() 方法中编写所有内容。 我删除了面板 p1,因为它是多余的。

public class Test
{
  public static void main(String[] args)
  {
    final Frame frm=new Frame("Add employee");
    Label lbl = new Label();
    frm.add(lbl);
    frm.setSize(350,200);
    frm.setVisible(true);
    frm.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
    });
    Panel p = new Panel();
    //Panel p1 = new Panel();
    final Label jFirstName = new Label("first name");
    final TextField lFirstName = new TextField(20);
    final Label jLastName =new Label("last name");
    final TextField lLastName=new TextField(20);
    final Label jAge= new Label("Age");
    final TextField lAge = new TextField(20);
    final Label jDate =new Label("Date");
    final TextField lDate=new TextField(20);
    final Label jType = new Label("employee type");
    final TextField lType = new TextField(20);
    p.setLayout(new GridLayout(7,1));

    p.add(jFirstName);
    p.add(lFirstName);
    p.add(jLastName);
    p.add(lLastName);
    p.add(jAge);
    p.add(lAge);
    p.add(jDate);
    p.add(lDate);
    p.add(jType);
    p.add(lType);

    Button Submit=new Button("Submit");

    Submit.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        String[] formData = new String[5];
        formData[0] = jFirstName.getText() + ": " + lFirstName.getText();
        formData[1] = jFirstName.getText() + ": " + lLastName.getText();
        formData[2] = jAge.getText() + ": " + lAge.getText();
        formData[3] = jDate.getText() + ": " + lDate.getText();
        formData[4] = jType.getText() + ": " + lType.getText();

        TextArea textArea = new TextArea();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < formData.length; i++)
        {
          sb.append(formData[i]);
          sb.append("\n");
        }
        textArea.setText(sb.toString());

        final Dialog dialog = new Dialog(frm, "Form Data");
        dialog.setModal(true);
        dialog.addWindowListener(new WindowAdapter()
        {
          @Override
          public void windowClosing(WindowEvent e)
          {
            dialog.setVisible(false);
          }
        });
        dialog.add(textArea);
        dialog.pack();
        dialog.setVisible(true);
      }
    });

    p.add(Submit);
    //p1.add(p);
    frm.add(/*p1*/p,BorderLayout.NORTH);
  }
}

【讨论】:

  • 感谢您提供此代码和您的建议,它真的很有帮助!我是一名 Java 初学者,对我帮助很大
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
相关资源
最近更新 更多