将控制台应用程序转换为swing应用程序

时间:2014-06-23 10:19:11

标签: java swing

作为一名初学Java程序员,我想帮助了解为我的控制台应用程序构建swing UI的最佳方法或技巧。

控制台应用程序现在运行良好我想将其转换为swing应用程序。我想在JScrollPane中有一个swing JTextArea,用户可以编辑它来输入它们的字符串然后单击countwords按钮并将输出作为int。

我的控制台应用程序的代码以及我对swing应用程序的尝试也在下面。我花了很多时间来研究这个,但我似乎无法做到这一点。

我非常感谢任何帮助和建议......感谢先进!

我的控制台应用:

 import java.util.*;
 public class WordCounter{

 public static void main(String args[])
    {
     // Create Scanner object
     Scanner s=new Scanner(System.in);

    // Read a string
     String st=s.nextLine();

     //Split string with space
     String words[]=st.trim().split(" ");

     System.out.println("No. of words "+words.length);
    }
  }

我对Swing的尝试:

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

import java.util.*;

class Countswords extends JPanel {

    public Countswords() {
        myTextArea();

    }

    private void myTextArea() {
        this.setLayout(new BorderLayout());
        this.setPreferredSize(new Dimension(400, 200));

        JTextArea textArea = new JTextArea(5, 40);
        JScrollPane scrollPane = new JScrollPane(textArea);
        // textArea.setEditable(true);
        JTextArea.setText(userInput);

    }

    public static void showFrame() {
        JPanel panel = new Countswords();
        panel.setOpaque(true);

        JFrame frame = new JFrame("My Text Area");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        // Create Scanner object
        // Scanner s=new Scanner(System.in);

        // Read a string
        // String st=s.nextLine();

        // Split string with space
        // String words[]=st.trim().split(" ");

        // System.out.println("No. of words "+words.length);
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                Countswords.showFrame();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用此代码将您的应用设为基于Swing。

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

import javax.swing.*;
import java.util.*;

public class CountWords extends JFrame {
JTextArea   textArea;
JScrollPane scrollPane;
Container   container;

JPanel      panel;
JLabel      label;

JButton     button;

public CountWords() {
    initialize();
    addToPanel();
}

public void initialize() {
    container = getContentPane();
    textArea = new JTextArea(5,20);
    scrollPane = new JScrollPane(textArea);

    button = new JButton(" Count Words ");

    panel = new JPanel();
    label = new JLabel(" Total Words : ");

    label.setBackground(Color.yellow);
}

public void addToPanel() {

    panel.add(button);

    container.add(scrollPane, BorderLayout.NORTH);
    container.add(panel, BorderLayout.SOUTH);
    container.add(label, BorderLayout.CENTER);

    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae) {
            label.setText("No.of Words : "+ getTotalWords(textArea.getText()));
        }
    });
}

public int getTotalWords( String text ){
    String words[]= text.trim().split(" ");
    return words.length;
}
public static void main(String args[]) {
    CountWords cw = new CountWords();
    cw.setDefaultCloseOperation(3); // JFrame.EXIT_ON_CLOSE => 3
    cw.pack();
    cw.setSize(400,300);
    cw.setVisible(true);
}
}