用不同的方法设置对象

时间:2017-05-12 17:48:02

标签: java object methods jframe

我需要这个代码的帮助。
我真的需要帮助...

    package Window;
import java.awt.Color;
import javax.swing.*;
public class Window
{
    public static void build()
    {
        //Create Elements
        JFrame frame = new JFrame();
        JButton send = new JButton();
        JTextArea dialog = new JTextArea();
        JTextArea input = new JTextArea();
        JScrollPane scroll=new JScrollPane(
                dialog,
                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
        );
        send.setLocation(505,520);
        send.setSize(80,20);
        send.setBackground(Color.green);
        send.setText("Send");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(590, 600);
        frame.setTitle("Bot");
        frame.setLayout(null);
        frame.setResizable(false);
        frame.setBackground(Color.green);
        dialog.setLocation(5, 5);
        dialog.setSize(575,510);
        input.setLocation(15, 520);
        input.setSize(490,25);
        frame.add(send);
        frame.add(dialog);
        frame.add(input);
        frame.add(scroll);
    }
    void show()
    {
        frame.setVisible(true);
    }
}

我希望能够从单独的方法设置框架可见。
但它无法找到框架对象
有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要让show()方法知道要设置的内容。

目前,您只为JFrame方法的范围定义build()变量(因此无法直接从其他方法访问)。

如果这是您的GUI类,您可以使JFrame成为类变量。像这样:

public class Window {
JFrame frame = new JFrame();
.
.

或者您可以定义它并在JFrame方法中创建实际的build()

public class Window {
JFrame frame;

public static void build(){
 frame = new JFrame();
 .
 .

现在,您将能够访问frame方法中的show()变量。例如,如果要以不同的类方法访问它,则可以将frame对象作为参数传递。像这样:objectOfDifferentClass.myMethod(frame);将此类中的方法定义为myMethod(JFrame frame){...}

You can read more about variable scopes here.