Java 将类JTextArea传输到主类JTextArea

Java 将类JTextArea传输到主类JTextArea,java,textarea,Java,Textarea,此类从网站提取URL并在JTextArea中显示输出 public class SimpleWebCrawler extends JFrame { static JTextArea _resultArea = new JTextArea(200, 200); JScrollPane scrollingArea = new JScrollPane(_resultArea); private final static String newline = "\n"; public

此类从网站提取URL并在JTextArea中显示输出

public class SimpleWebCrawler extends JFrame {

static JTextArea _resultArea = new JTextArea(200, 200);
    JScrollPane scrollingArea = new JScrollPane(_resultArea);
    private final static String newline = "\n";

 public SimpleWebCrawler() throws MalformedURLException {


        _resultArea.setEditable(false);
        System.out.println("Please enter the website  :");
        Scanner scan2 = new Scanner(System.in);
        String word2 = scan2.nextLine();

        try {
            URL my_url = new URL("http://" + word2 + "/");
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    my_url.openStream()));
            String strTemp = "";
            while (null != (strTemp = br.readLine())) {
                _resultArea.append(strTemp + newline);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        JPanel content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(scrollingArea, BorderLayout.CENTER);

        this.setContentPane(content);
        this.setTitle("Crawled Links");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.pack();

public static void main(String[] args) throws IOException {



        JFrame win = new SimpleWebCrawler();
        win.setVisible(true);

    }
}

这个类是GUI的主类。它有一个按钮来调用另一个类来执行代码。现在的问题是,我在这个主类框架上放置了一个JTextArea。如何将上述类输出传输到此类JTextArea

在SimpleWebCrawler的构造函数中有一个main,在main的createAndShowGUI中有另一个

  • 一个应用程序中不能有两个主要方法

  • 在Java中,不能将一个方法放入另一个方法中

  • public SimpleWebCrawler()抛出了错误的FormedUrlexception,您还可以在内部尝试捕获

  • 如果在publicstaticvoidmain前面添加一个右括号“}”,SimpleCrawler将起作用

  • 就像这里

    public class Main {
    
        private static void createAndShowGUI()  {
    
            JFrame frame1 = new JFrame("FINAL YEAR PROJECT VER 1.0");
            JTextArea test = new JTextArea(200, 200);
            frame1.setSize(500,500);
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame1.add(test);
    
            FlowLayout experimentLayout = new FlowLayout();
            experimentLayout.setAlignment(FlowLayout.CENTER);
            frame1.setLayout(experimentLayout);
    
    
    
            JButton button = new JButton("Extract Links");
     button.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e)
                {
                    try {
                        SimpleWebCrawler.main(null);
    
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });      
    
     frame1.getContentPane().add(button);
    
    public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
    
    您根本不需要主类。JTextArea位于SimpleWebCrawler中。你需要在这里添加你的逻辑


    为了将其转化为web爬虫程序,您可以从_resultareajtextarea获取HTML,对其进行处理,并将结果与另一个JTextArea一起传递并显示到模态JDialog,或者在同一JFrame中的JTextArea旁边添加第二个JTextArea

    “将上述输出传输到此类JTextArea类”是什么意思?这意味着在主类JTextArea中显示第一类输出。是否要使用两个不同的过程?为什么不将多线程应用程序与模式模型视图控制器一起使用呢?是的,因为我还有另外一个类来完成它们的特定功能。我的工作是将这些类合并到主类中的一个GUI中。我正想在点击按钮时,将一个类的输出显示到主类GUI文本区域。先生,谢谢您的反馈。您可以在“传递并将结果显示到模态JDialog”中进一步解释一下吗?您可以在原始JFrame中添加一个“Evaluate”JButton,并让它的动作侦听器将您已经读取的HTML解析到JTextField中。您可以创建第二个名为ResultsDialog的类,该类扩展了JDialog,并具有一个JTextArea、一个OK按钮和一个void setResults(String myResults)方法。解析完成后,可以调用ResultsDialog构造函数,传递结果字符串并使对话框可见。在按下OK(确定)按钮之前,结果将可见。
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       this.pack();
    }
    public static void main(String[] args) throws IOException {
       JFrame win = new SimpleWebCrawler();
       win.setVisible(true);
    }