【问题标题】:Calling JPanels within a method and adding it to a JFrame?在方法中调用 JPanel 并将其添加到 JFrame?
【发布时间】:2013-11-29 04:37:21
【问题描述】:

我正在编写一个需要输入的程序,但输入字段非常相似(除了名称之外,它们基本上是相同的)。在下面粘贴的代码中,我只显示了前两个 JPanel 的代码,但总共有 7 个,并且按照我的代码当前设置的方式,我只是重复了 7 次代码。但是,我觉得应该有一种方法可以编写一个方法,然后我可以简单地调用该方法 7 次。那可能吗?我该怎么做?我需要有不同名称的面板才能将它们分别添加到我的 JFrame 中。

我想我要问的是:如何在一个方法中调用非常相似的 JPanel,以便在调用该方法时将它们添加到 JFrame。我在 Java 方面完全是个菜鸟,这是我的第一个大项目。感谢您提供的任何帮助。

public GPACalculatorController(){
    setTitle("GPA Calculator");
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel dataEntryPanel = new JPanel(new GridLayout(0,1));
    JPanel dataEntryPanelBorder = new JPanel(new BorderLayout());

    JPanel previousSemesterInstructions = new JPanel(new BorderLayout());
    previousSemesterInstructions.add(new JLabel("Previous Semesters:"), BorderLayout.WEST);

    dataEntryPanel.add(previousSemesterInstructions);

    JPanel semesterOnePanel = new JPanel(new FlowLayout());

    semesterOnePanel.add(new JLabel("Semester 1:"));
    semesterOnePanel.add(new JLabel("   GPA:"));
    semesterGPA = new JTextField(4);
    semesterOnePanel.add(semesterGPA);
    //semesterGPA.addActionListener(new SemesterGPAListener());
    semesterOnePanel.add(new JLabel("Credits:"));
    semesterCredits = new JTextField(2);
    semesterOnePanel.add(semesterCredits);
    //semesterCredits.addActionListener(new SemesterCreditsListener());
    dataEntryPanel.add(semesterOnePanel);

    JPanel semesterTwoPanel = new JPanel(new FlowLayout());
    semesterTwoPanel.add(new JLabel("Semester 2:"));
    semesterTwoPanel.add(new JLabel("   GPA:"));
    semesterGPA = new JTextField(4);
    semesterTwoPanel.add(semesterGPA);
    //semesterGPA.addActionListener(new SemesterGPAListener());
    semesterTwoPanel.add(new JLabel("Credits:"));
    semesterCredits = new JTextField(2);
    semesterTwoPanel.add(semesterCredits);
    //semesterCredits.addActionListener(new SemesterCreditsListener());
    dataEntryPanel.add(semesterTwoPanel);

【问题讨论】:

  • 创建SemesterPanel 类并让构造函数之一接受int 参数。
  • 这就是我的想法,但是,如果我这样做,它不会将所有面板命名为相同的东西吗?如果它这样做了,编译器不会因为我将相同的变量声明为各种事物而吓坏了吗?
  • 定义一个构造函数SemesterPanel,将您要分配给组件的名称作为参数。

标签: java swing methods jframe jpanel


【解决方案1】:

创建一个类或可能的方法(函数),它接受一个参数来创建一个新的 JPanel。 使用 frameObject.setContentPane(panelObject) 根据您的要求将该面板添加到框架中

【讨论】:

  • 讨厌这么说,但我仍然完全糊涂(我是一个完全的编程初学者)。我用以下签名写了一个公开的方法“JPanel previousSemesterData(int termNumber)”,然后在我的控制器类中做了“JPanel mySemester = new previousSemesterData(1); dataEntryPanel.add(mySemester);”但它仍然没有做任何事情。我很抱歉,我只是很困惑。任何帮助将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多