【问题标题】:How to make a String available in other classes如何使字符串在其他类中可用
【发布时间】:2019-03-24 02:01:32
【问题描述】:

我已经设法将输入转换为在同一个类中可用的字符串,但我想这样做,以便输入字符串可以在不同的类中使用。当前类是 OpenDetails,我希望字符串 selectedFile 在另一个名为 OpenFileInfo 的类中可用。我将如何设置它,以便可以将 selectedFile 的结果存储在 selectedRequirement 中或使其在其他类中可用?

我是 Java 新手,如果有人能帮忙,谢谢。

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class OpenFile
{
    String selectedRequirement = "";

    public static void main(String a[])
    {

    JFrame parent = new JFrame();
    String selectedFile;
    selectedFile = JOptionPane.showInputDialog(parent, "Add a new module");


    if(selectedFile.equalsIgnoreCase(selectedFile)){
    //Makes the user input case insensitive
    }

        final JTextArea edit = new JTextArea(60,100);

        JButton read = new JButton("Open "+ selectedFile +".txt");
        read.addActionListener( new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    FileReader reader = new FileReader(selectedFile + ".txt");
                    BufferedReader br = new BufferedReader(reader);
                    edit.read( br, null );
                    br.close();
                    edit.requestFocus();
                }
                catch(Exception e2) { System.out.println(e2); }
            }
        });

        JButton write = new JButton("Save "+ selectedFile + ".txt");
        write.addActionListener( new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    FileWriter writer = new FileWriter(selectedFile + ".txt");
                    BufferedWriter bw = new BufferedWriter( writer );
                    edit.write( bw );
                    bw.close();
                    edit.setText("");
                    edit.requestFocus();
                }
                catch(Exception e2) {}
            }
        });
                System.out.println("Module: " + selectedFile);

        JFrame frame = new JFrame("Requirements");
        frame.getContentPane().add( new JScrollPane(edit), BorderLayout.NORTH );
        frame.getContentPane().add(read, BorderLayout.WEST);
        frame.getContentPane().add(write, BorderLayout.EAST);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    } 
}

【问题讨论】:

    标签: java string class


    【解决方案1】:

    当您从静态上下文运行时,您需要将 selectedRequirement 定义为静态:

    private static String selectedRequirement = "";
    

    要使 selectedRequirement 等于 selectedFile,只需在 main 函数的末尾说selectedRequirement = selectedFile;(也许你已经打印了它)。

    要使 selectedRequirement 可用于其他类,您需要在 OpenFIle 类中(在主函数之外)创建一个“getter 函数”,例如:

    public String getSelectedRequirement(){
        return selectedRequirement;
    }
    

    正如 cmets 中所指出的,您(或将来发现此问题的任何人)最好查看一些关于 getter、setter 和一般封装的 tutorials

    【讨论】:

    • 看看 java setter 和 getter ;)
    • @MZ4Code 这是对 KSJaay_ 的建议吗?还是我(暗示有问题)?无论哪种方式,是的,KSJaay_ 可能想查看一些教程w3schools.com/java/java_encapsulation.asp
    • 是的,谢谢你们的帮助
    • @gabe870 是的,这是给 KSJaay 的 :)
    • @KSJaay_ 太棒了!我很高兴我能提供帮助!如果您不再需要这方面的帮助,请随时将我的问题标记为“已接受”!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 2019-07-02
    相关资源
    最近更新 更多