作为一名初学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();
}
});
}
}
答案 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);
}
}