从JTextArea转换为String并返回

时间:2013-10-15 16:04:13

标签: java swing jframe jtextarea

对于家庭作业,我的任务是确定句子中每个字母的数量。我已经使用JOptionPane成功完成了作业。但我想在JFrame中显示。我能够从文本区域输入转换,但是没有表格可以从字符串转换回文本区域显示。

for (short i = 0; i < (output).length(); i++)
                {
                    char temp = Character.toLowerCase((output).charAt(i));
                    if (temp >= 'a' && temp <= 'z')
                        counts[temp - 'a']++;
                }

                for (short i = 0; i < counts.length; i++)
                {
                    output += (char) ('a' + i) + ":\t " + counts[i] + "\n";
                }

                for (short i = 0; i < (input).length(); i++)
                {
                    if ((output).charAt(i) == 'a' || (output).charAt(i) == 'A')
                        count++;
                }
                txaResults.setText(output);

2 个答案:

答案 0 :(得分:1)

尝试将createAndShowGUI放在frame.setVisible之前。您可以在方法执行之前使框架可见。

我认为这可能是你的问题:

// You're doing this
output = txaResults.getText();

// but I think you want this
input = txaUserInput.getText();

String output = "";

// Your logic here
...
...

txaResults.setText(output);

您需要执行txaUserInput中的逻辑并将其显示在txaResults

修改: 试试这个逻辑

       int[] counts = new int[26];
       for (short i = 0; i < (input).length(); i++)

       {
                char temp = Character.toLowerCase((input).charAt(i));
                if (temp >= 'a' && temp <= 'z')
                    counts[temp - 'a']++;
       }


       for (short i = 0; i < counts.length; i++)
       {
               output += (char) ('a' + i) + ":\t " + counts[i] + "\n";
       }

       int count = 0;
       for (short i = 0; i < (input).length(); i++)
       {
                if ((input).charAt(i) == 'a' || (input).charAt(i) == 'A')
                    count++;
       }

       output += "" + count;
       txaResults.setText(output);

答案 1 :(得分:0)

使用gettext()获取文字。然后简单地循环文本的单词。

您可以使用HashMap<String,Integer> String为单词,Integer为频率。获得文本后,只需使用split()将其分解为单词。然后,循环遍历它并将每个单词添加到地图中。

添加时,首先检查单词是否存在。如果没有,请添加它并将计数设置为1。下次遇到该单词时,递增计数器并将其添加回地图。

 // the horror logic for calculating
 // word frequency ommitted for
 // sanity's sake

JLabel[] lotOfLabels;
JFrame outputFrame = new JFrame("Final Answer");
Set<String> allMyWords = thatHashMap.keySet();
int totalWords = allMyWords.size();
int count = 0;

outputFrame.setLayout(new FlowLayout());
lotOfLabels = new JLabel[totalWords];
for(String each : allMyWords){
    int frequencyOfAWord = allMyWords.get(each);
    lotOfLabels[count] = new JLabel(each + " " + frequencyofAWord);
    outputFrame.getContentPane().add(lotsOfLabels[count]);
    count++;
}

outputFrame.pack();
outputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
outputFrame.setVisible(true);  

上面的代码用于在JFrame中显示答案