当前位置: 首页 > 知识库问答 >
问题:

从单独的JFrame获取数据

欧阳安晏
2023-03-14

如何在java摆中从第二个JFrame获取数据?我有一个带有JLabel和JButton的帧。单击JButton时,它会打开另一个带有自定义日历的帧。我想选择日期(通过JButton)并将日期放在主JFrame的JLabel中。我不想创建第一帧的新实例,因为还有其他用户可能键入的我不想删除的信息。

共有1个答案

宋康安
2023-03-14

正如许多地方所建议的那样,使用2JFrames不是一个好的做法。您可以使用下面的示例中的JDialog来代替第二个JFrame。

我们可以使用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;
  }
}

 类似资料:
  • 问题内容: 我有1100、1002、1022等数字。我想使用单个数字,例如,对于第一个数字1100,我希望具有1、1、0、0。 如何用Java获取它? 问题答案: 为此,你将使用(mod)运算符。 mod运算符将为你提供对int进行除法运算的其余部分。 所以, 因为: 注意:如Paul所述,这将为你提供相反的数字。你将需要将它们压入堆栈并以相反的顺序弹出。 代码以正确的顺序打印数字:

  • 问题内容: 我有一个带有两个单独的JPanels的JFrame。一个JPanels充满了JButton,而另一个则有几个文本字段。我通过JFrame在按钮上添加了鼠标侦听器,我希望这样做,以便从第一个JPanel触发事件时,第二个JPanel中的文本字段会发生更改。这两个面板有各自的类。我将如何去做呢? 问题答案: 使用MVC,Model-View-Control,关注点分离。 让拥有您的听众的控

  • 我有一个带有两个独立JPanels的JFrame。其中一个JPanels填充了JButtons,而另一个则有几个文本字段。我通过JFrame向按钮添加了鼠标监听器,我想让它在第一个JPanel触发一个事件时,第二个JPanel中的文本字段发生变化。这两个面板有自己的类。我该如何着手做这件事?

  • 我在我的项目中添加了一个jDialog Swing表单,如图所示: 现在我想从jtextField获取到父JFrame的值,当我关闭这个JDialog时,我搜索了一下它,发现: 但是编译器告诉我在我的JDialog中没有名为

  • 问题内容: 我试图将我的Swing GUI与实际代码分开。简而言之,我希望用户启动一个过程(基于用户的选择);在这种情况下,将不再需要JFrame。 我不知道的是如何与Main.class共享来自GUI.class的用户选择。 您对我有什么建议吗? 这是我的代码: 问题答案: 一个很好的方法是使用 机制。 遵循的步骤: 创建一个回调接口 } 类将实现接口,但不提供任何实现 制作类 现在创建一个类的

  • 我花了一点时间浏览堆栈溢出和互联网寻找我的问题的答案,但是我发现所有的答案都很难理解,我不确定它们中是否有任何一个与我的问题相关,所以我决定我需要帮助正确的背景。 我正在创建一个程序,将根据输入的特定类型的图形给出一系列解决方案。我真诚地挣扎着在第一个JFrame中从我的JComboBox中获取数据,并在第二个JFrame中显示它。 我有两个类,GraphEquationSolverGUI和定义方