我在同一个包中有两个.java文件。我打算将第一个.java文件作为底层代码,将第二个.java文件作为GUI swing接口。
我遇到的问题是在处理项目的GUI部分时,我需要使用代码从.java文件中访问多个方法。我的带有代码的.java文件是这样的:
package same;
public class HFSim extends ApplicationTemplate
{
private static class AppFrame extends ApplicationTemplate.AppFrame
{
public myMethodIWanttoUse()
{
//code
}
在我的GUI .java中:
package same;
public class GUI extends JFrame
{
public GUI()
{
public void actionPerformed(ActionEvent e)
{
//this is where I want to use the method from above
有没有办法让这个方法在GUI部分中使用?或者有更好的方法来解决这个问题吗?提前谢谢。
答案 0 :(得分:4)
您的问题有多种解决方案。您应该回答的第一个问题是您需要调用的这些方法是否符合条件。
你可以:
声明他们static
并致电他们,例如HFSim.AppFrame.myMethoIWanttoUse();
声明包含它们的对象的静态实例,例如
public class HFSim extends ApplicationTemplate {
public static final AppFrame appFrame = new AppFrame();
...
}
public class GUI extends JFrame {
public GUI() {
public void actionPerformed(ActionEvent e) {
HFSim.appFrame.myMethodIWanttoUse();
}
}
}
将对象的实例传递给另一个:
public class GUI extends JFrame {
private final HFSim.AppFrame appFrame;
public GUI(HFSim.AppFrame appFrame) { this.appFrame = appFrame; }
public void actionPerformed(ActionEvent e) {
appFrame.myMethodIWanttoUse();
}
}
答案 1 :(得分:0)
通过替换
使methodIWantToUse()
成为静态
public myMethodIWanttoUse()
与
public static myMethodIWanttoUse()
其次,将AppFrame
标记为public
而不是private
。
然后只需按此方法调用HFSim.AppFrame.myMethodIWantToUse()
。
修改强>
或者,您不必制作方法static
。只需在GUI代码中添加:
HFSim.AppFrame frame = new HFSim.AppFrame();
frame.myMethodIWantToUse();
不管怎样,你必须让AppFrame
成为public
。