从同一个包中的不同类调用新方法
我试图用几个选项卡式窗格创建应用程序,为了使代码易于管理,我希望将这些窗格的内容分开放在单独的类中。 java文件。从同一个包中的不同类调用新方法
我有3个文件当前 (ⅰ)TestLayout.java
package testlayout;
public class TestLayout
{
public static void main(String[] args)
{
MainFrame mainFrameObject = new MainFrame();
mainFrameObject.displayMainFrame();
}
}
(ⅱ)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);
}
*/
}
和 (ⅲ)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();和MainFrame中的showReadMe方法,它的工作原理。该选项卡被添加到JFrame中,并且测试消息显示在框中。
但应该
DisplayReadMe drmObj = new DisplayReadMe();
drmObj.showReadMe();
代码,而不是做同样的事情?我是不是从DisplayReadMe类调用showReadMe方法,类似于showReadMe()。
我试过重新验证,重绘和线程,似乎没有什么调用方法并显示标签和消息?
任何指导,将衷心感谢 非常感谢 PG
的方法,实际上是工作的,但在drmObj的选项卡窗格实例是与大型机对于JTabbedPane的类成员不同。尝试添加tabbedPane作为showReadMe()中的参数,并在添加元素时参考该实例。它应该工作。
public void showReadMe(JTabbedPane tabbedPane);
...
drmObj.showReadMe(this.tabbedPane);
希望它有帮助!
你可能没有重复的方法有相同的参数,检查是否有谁无所求作为参数的另一个showReadMe方法。 如果您对showReadMe进行覆盖,请记住它会使showReadMe成为主类,然后会使showReadMe继承,因为它无法继续。
我donno如果我解释得很好。
谢谢乔尔的快速反应,它确实与参数有关。 PG – pgee75
谢谢洛伦佐的快速反应。您的解决方案完美运作PG – pgee75
不客气:) –