【问题标题】:How to access variables from the main method in another class如何从另一个类的主方法访问变量
【发布时间】:2014-07-06 20:43:21
【问题描述】:

这可能是一个菜鸟问题,但是哦,我需要从我的 main 方法中收集 frameWidth 和 frameHeight 变量


frame.java

public static void main(String[] args) { 
    .....
    .......                                                
    int frameWidth  = frame.getContentPane().getWidth();
    int frameHeight  = frame.getContentPane().getHeight();
}

Board.java

public class board extends JPanel {
    private frame Frame;

    public board() {
        Frame = new frame();
        int FrameWidth = frame.main().frameWidth;
        int FrameWidth = frame.main().frameHeight;
    }
}

访问变量的正确方法是什么?

【问题讨论】:

  • .. 和 Board 不是 board
  • Java 方法没有属性。您不能在定义它们的方法之外访问 local 变量。
  • ...并且不要不必要地混合 Swing (JPanel) 和 AWT (Frame) 组件。坚持使用 Just Swing (JFrame)。

标签: java methods static public


【解决方案1】:

您需要在 Main 类中声明 board(该类应为大写 B)对象,并为宽度和高度定义 getter,如下所示:

public static void main(String[] args) { 
Board board = new Board();                                              
int frameWidth  = board.getWidth();
int frameHeight  = board.getHeight();
}

public class board extends JPanel {
private frame Frame;

public board() {
    Frame = new frame();
    int FrameWidth = frame.frameWidth;
    int FrameWidth = frame.frameHeight;
}
public int getWidth(){
     return frame.frameWidth;
}

public int getHeight(){
    return frame.frameHeight;

}
}

【讨论】:

  • type框架中的main(String[])方法不适用于参数()
  • @unableToCompile 抱歉,我 cpy 粘贴了您的代码,从框架中删除 main() 调用。我假设一些框架定制类。
  • 我认为您没有正确阅读我的问题,我有一个具有帧宽度和长度值的主要方法。现在,我需要从 board.java 中的 board 类中获取这些变量
【解决方案2】:

将其传递给构造函数:

private int width = 0, height= 0;
public Board(int width, int height){
  ...
  this.width = width;
  this.height = height;
}

然后在你的main:

Board myBoard = new Board(FrameWidth, FrameHeight);

您的班级现在可以分别以widthheight 访问变量FrameWidthFrameHeight

【讨论】:

  • 嗨,Astro 这并没有回答 OP 的情况,他需要从 Main 类中获取高度和宽度,而不是从那里设置。框架可以调整大小。
  • @boolean 这没有设置它;它允许他访问frameWidthframeHeight的值“来自主方法在另一个类中”作为变量widthheight使用那个类。
  • 我认为我无法通过参数发送高度和宽度,因为 jframe 尚未设置为可见......
  • 在板设置为可见后构建板。
  • @AstroCB 但我有frame.getContentPane().add(new board()); 这条线,我不确定这是否可能
猜你喜欢
  • 2014-10-10
  • 2015-01-21
  • 2013-10-25
  • 2021-08-09
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多