Java 从同一包中的不同类调用新方法

Java 从同一包中的不同类调用新方法,java,class,methods,package,Java,Class,Methods,Package,我正在尝试创建一个具有多个选项卡式窗格的应用程序,为了使代码易于管理,我希望将这些窗格的内容放在单独的类中,放在单独的.java文件中 我目前有3个文件 (i) TestLayout.java package testlayout; public class TestLayout { public static void main(String[] args) { MainFrame mainFrameObject = new MainFrame();

我正在尝试创建一个具有多个选项卡式窗格的应用程序,为了使代码易于管理,我希望将这些窗格的内容放在单独的类中,放在单独的.java文件中

我目前有3个文件 (i) TestLayout.java

package testlayout;
public class TestLayout 
{
    public static void main(String[] args) 
    {
        MainFrame mainFrameObject = new MainFrame();
        mainFrameObject.displayMainFrame();
    }
}
(ii)MainFrame.java

package testlayout;

import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;

public class MainFrame 
{
    JFrame masterFrame = new JFrame("JAVA 1.1");
    JTabbedPane tabbedPane = new JTabbedPane();
    public void displayMainFrame()
    {
        masterFrame.setSize(1000, 600);
        masterFrame.setVisible(true);
        masterFrame.setResizable(false);
        masterFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        masterFrame.add(tabbedPane);

        DisplayReadMe drmObj = new DisplayReadMe();
        drmObj.showReadMe();
        //showReadMe();
    }

    /*
    public void showReadMe()
    {
        JPanel panelReadMe = new JPanel(new GridLayout(10,1,8,8));
        panelReadMe.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
        tabbedPane.addTab("Read Me", null, panelReadMe, "First Tab");
        String testreadMeTestMessage = "This is a test message";

        JLabel testreadMeLabel = new JLabel(testreadMeTestMessage, SwingConstants.LEFT);
        testreadMeLabel.setBorder(BorderFactory.createLineBorder(Color.orange,3));
        panelReadMe.add(testreadMeLabel);
    }
    */
}
及 (iii)DisplayReadMe.java

package testlayout;

import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

public class DisplayReadMe extends MainFrame
{
    public DisplayReadMe()
    {

    }
    public void showReadMe()
    {
        System.out.println("method showReadMe begins");
        JPanel panelReadMe = new JPanel(new GridLayout(10,1,8,8));
        panelReadMe.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
        tabbedPane.addTab("Read Me", null, panelReadMe, "First Tab");
        String testreadMeTestMessage = "This is a test message";

        JLabel testreadMeLabel = new JLabel(testreadMeTestMessage, SwingConstants.LEFT);
        testreadMeLabel.setBorder(BorderFactory.createLineBorder(Color.orange,3));
        panelReadMe.add(testreadMeLabel);
        System.out.println("method showReadMe ends");
    }
}
我的查询是,当我取消注释//showReadMe()时;在大型机中使用showReadMe方法,它是有效的。选项卡被添加到JFrame中,测试消息显示在框中

但政府是否应该

DisplayReadMe drmObj = new DisplayReadMe();
drmObj.showReadMe();
代码,不是做同样的事情吗?我不是从DisplayReadMe类调用showReadMe方法,类似于showReadMe()

我尝试过重新验证、重新绘制和线程化,但似乎没有任何东西调用该方法并显示选项卡和消息

任何指导都将不胜感激 非常感谢
PG

您可能没有具有相同参数的重复方法,请检查是否有其他showReadMe方法不需要任何参数。 如果对showReadMe进行覆盖,请记住它将使showReadMe成为主类,然后将使showReadMe继承,因为它不能再上一层楼了


如果我解释得很好的话,我就不知道了。

该方法实际上是有效的,但是drmObj中的tabbedPane实例与大型机中的JTabbedPane类成员不同。尝试将tabbedPane作为参数添加到showReadMe()中,并在添加元素时引用该实例。它应该会起作用

public void showReadMe(JTabbedPane选项卡窗格)

drmObj.showReadMe(this.tabbedPane)


希望有帮助

谢谢洛伦佐的快速回复。你的解决方案非常有效。谢谢Joel的快速回复,这确实与参数有关。PG