为了账号安全,请及时绑定邮箱和手机立即绑定

从单独的 JFrame 获取数据

从单独的 JFrame 获取数据

ABOUTYOU 2022-05-21 20:42:33
如何从 java swing 中的第二个 JFrame 获取数据?我有一个带有 JLabel 和 JButton 的框架。单击 JButton 时,它会打开另一个带有自定义日历的框架。我想选择日期(通过 JButton)并将日期放在主 JFrame 的 JLabel 中。我不想创建第一帧的新实例,因为我不想删除用户可能键入的其他信息。
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

正如许多地方所建议的那样,使用 2 JFrames 不是一个好习惯。而不是第二个,您可以在下面的示例JFrame中使用类似的。JDialog


我们可以获取用户输入的日期getDate()并在框架中使用它。


import javax.swing.*;

import java.awt.*;

import java.awt.event.*;


public class TwoFrames

{

  public static void main(String[] args)

  {

    JFrame frame = new JFrame("Frame");


    JLabel label = new JLabel("No date selected");


    JButton button = new JButton("Open date dialog");

    button.addActionListener(new ActionListener()

    {

      @Override

      public void actionPerformed(ActionEvent e)

      {

        DateDialog dateDialog = new DateDialog(frame);

        dateDialog.setLocationRelativeTo(frame);

        dateDialog.setVisible(true);

        label.setText(dateDialog.getDate());

      }

    });


    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.getContentPane().add(label, BorderLayout.CENTER);

    frame.getContentPane().add(button, BorderLayout.SOUTH);

    frame.setBounds(300, 200, 400, 300);

    frame.setVisible(true);

  }

}


class DateDialog extends JDialog

{

  private String date;


  DateDialog(Frame owner)

  {

    super(owner, "Select date", true);

    JTextField dateField = new JTextField(20);


    JButton okButton = new JButton("OK");

    okButton.addActionListener(new ActionListener()

    {

      @Override

      public void actionPerformed(ActionEvent e)

      {

        date = dateField.getText();

        setVisible(false);

      }

    });


    getContentPane().add(dateField, BorderLayout.CENTER);

    getContentPane().add(okButton, BorderLayout.SOUTH);

    setSize(300, 200);

  }


  String getDate()

  {

    return date;

  }

}


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信