如何在静态方法之间共享对象?这是否可能?还有更好的方法吗?
在我的代码中,我在一个类中有一个框架。我有不同的静态方法来在同一个类中使用此框架。我在另一个类中调用这些方法。
对于挥杆来说,有更好的方法吗?基本上我想创建一个Frame,在其中我可以通过其他类的方法编辑大小,颜色和内容(这些类将具有我将在此框架上使用的Panel)。
调用静态方法的类:
import javax.swing.*;
public class Main{
// Display Login Window
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
try
{
new loginFrames();
loginFrames.showFrame("hello", 1200, 800);
}
catch (Exception e)
{
e.printStackTrace();
}
});
}
}
使用静态方法的类:
import javax.swing.*;
import java.awt.*;
public class loginFrames{
public JFrame appFrame;
public void createFrame(String frameName, int frameW, int frameH) {
// Create JFrame with frame name, width, and height
appFrame = new JFrame(frameName);
appFrame.setSize(frameW, frameH);
// Get the content pane and set the background colour black
Container absFrameContentPane = appFrame.getContentPane();
absFrameContentPane.setBackground(Color.BLACK);
// Show the frame
appFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
appFrame.setVisible(true);
}
// Callable from Main class
public static void showFrame(String frameName, int frameW, int frameH) {
loginFrames applicationFrame = new loginFrames();
applicationFrame.createFrame(frameName, frameW, frameH);
}
// Callable from Main class
public static void appAddPanel(String frameName, int frameW, int frameH) {
// How do I call the same object above, here?
}
}
答案 0 :(得分:1)
您的代码违反了各种OO原则,首先是信息隐藏/封装
您的变量appFrame
应声明为私有,并且只能通过loginFrames
类进行访问。
另外:由于变量appFrame
未声明为 static ,因此无法从该类中的静态方法(直接)访问它。
解决方案是从方法中删除 static 关键字,并通过类的对象访问它们(这听起来是否需要在对象 >面向对象的语言?)
答案 1 :(得分:0)
对我来说,我更喜欢使用外部文件作为JFrame选项。 FileReader用于从文件中获取值,循环并在数组或变量上分配它们。和PrintWriter用于更改选项。希望这个帮助