首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java gui窗口

java gui窗口
EN

Stack Overflow用户
提问于 2011-12-26 01:05:17
回答 3查看 392关注 0票数 2

我写了一段java代码,用于查找一组输入值的频率。这是输出的最后一部分应该是什么样子。

边界是:

间隔11.5 - 27.5包含:2个数字

间隔27.5 - 43.5包含:1个数字

间隔43.5 - 59.5不包含元素

间隔59.5 - 75.5包含:1个数字

间隔75.5 - 91.5包含:1个数字

但是,当我尝试将其转换为gui时,我遇到了一个小问题:结果的每一行都显示在一个新窗口中。

这是gui代码:

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Frequency

{

private static ArrayList<Integer> FindNumbersInInterval(int[] array,double     startInterval,double endInterval)
{

    ArrayList<Integer> result = new ArrayList<Integer>() ;

    for(int v: array)
    {
        if(v >= startInterval && v <= endInterval)
        {
            result.add(v);
        }
    }
    return result;
}

public static void main(final String args[])
{

    int smallest = Integer.MAX_VALUE;

    int largest = Integer.MIN_VALUE;

    int range = 0;

    String numberOfNumbers =
    JOptionPane.showInputDialog("How many numbers do you want to enter: ");
    int num=Integer.parseInt(numberOfNumbers);


    int array[]=new int[num];   




    for(int i=0; i<array.length; i++)
    {

    String theNumbers =
    JOptionPane.showInputDialog("Enter the numbers now: ");

    array[i]=Integer.parseInt(theNumbers);

    {
        if(array[i] < smallest)

            smallest = array[i];

        if(array[i] > largest)

            largest = array[i];

    }

    }

    JOptionPane.showMessageDialog(null,"Smallest is "+smallest,"Smallest",JOptionPane.PLAIN_MESSAGE);
    JOptionPane.showMessageDialog(null,"Largest is "+largest,"Largest",JOptionPane.PLAIN_MESSAGE);


    range = largest - smallest;

    JOptionPane.showMessageDialog(null,"Range is "+range,"The Range",JOptionPane.PLAIN_MESSAGE);

    String subInterval =
    JOptionPane.showInputDialog("Enter the number of subinterval: ");
    int subnum = Integer.parseInt(subInterval);

    int subwid = range / subnum;

    JOptionPane.showMessageDialog(null,"The width of subinterval is "+subwid,"width",JOptionPane.PLAIN_MESSAGE);



    double boundary = smallest - .5;

    JOptionPane.showMessageDialog(null,"Boundaries are ","The Boundaries",JOptionPane.PLAIN_MESSAGE);

    while(boundary < largest + .5)

    {

        double startInterval = boundary;

        double endInterval   = boundary + subwid;

        ArrayList<Integer> numbersInInterval = FindNumbersInInterval(array, startInterval, endInterval);

        if(numbersInInterval.isEmpty())

            JOptionPane.showMessageDialog(null,"Interval "+startInterval+" - "+endInterval+" does NOT contain elements","result",JOptionPane.PLAIN_MESSAGE);

        else {

            JOptionPane.showMessageDialog(null,"Interval "+startInterval+" - "+endInterval+" contains "+numbersInInterval.size(),"result",JOptionPane.PLAIN_MESSAGE);


        }

        boundary += subwid;

    }

}
}

所以,我的问题是如何让一组结果出现在一个窗口中?

thnx..

EN

回答 3

Stack Overflow用户

发布于 2011-12-26 01:26:46

您需要使用不同的组件来在JOptionPane中显示。

也许您可以使用JTextArea或JList来显示单独的数据行。

然后将该组件添加到选项窗格并显示选项窗格。

阅读Swing tutorial。它有关于上述每个组件的部分和工作示例。

票数 2
EN

Stack Overflow用户

发布于 2011-12-26 01:27:24

然后用message.append(<your text here>)替换每个对JOptionPane的调用

或者,您可以在适当的组件(JLabel / JTextfield)中显示它并设置text属性。可以多次执行此操作,因此您可以在获得结果后立即显示结果。组件本身将定位在顶层窗口(JFrame或JDialog)中

票数 2
EN

Stack Overflow用户

发布于 2011-12-26 02:50:09

将以下代码添加到main方法中:

代码语言:javascript
复制
JFrame frame = new JFrame();
JPanel contentPane = new JPanel();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
frame.add(contentPane);

该代码创建一个新的JFrame和一个布局设置为BoxLayout的JPanel。

最后一个while循环的if语句

代码语言:javascript
复制
JLabel label = new JLabel("Interval "+startInterval+" - "+endInterval+" does NOT contain elements");
contentPane.add(label);

添加JLabel以显示文本。

最后一个while循环的else语句

代码语言:javascript
复制
JLabel label = new JLabel("Interval "+startInterval+" - "+endInterval+" contains "+numbersInInterval.size());
contentPane.add(label);

最后一段代码在最后一次while循环之后继续。

代码语言:javascript
复制
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

显示JFrame。

并且您可以从代码中删除以下行:

代码语言:javascript
复制
. . .
JOptionPane.showMessageDialog(null,"Interval "+startInterval+" - "+endInterval+" does NOT contain elements","result",JOptionPane.PLAIN_MESSAGE);
. . .

代码语言:javascript
复制
. . .
JOptionPane.showMessageDialog(null,"Interval "+startInterval+" - "+endInterval+" contains "+numbersInInterval.size(),"result",JOptionPane.PLAIN_MESSAGE);
. . .
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8630567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档