Java JScrollPane不是';t在GUI中工作

Java JScrollPane不是';t在GUI中工作,java,swing,layout,user-interface,jscrollpane,Java,Swing,Layout,User Interface,Jscrollpane,好的,我正在尝试创建一个GUI,它有一个JScrollPane,通过JTextArea,它将一次打印一行int数组。我正在使用我为作业创建的一些方法来处理数据,并让其中一个方法处理以下示例中的数据(我无法显示这些方法,因为作业尚未到期)。这些方法已经过测试,效果良好,因此在这个问题上不需要它们。到目前为止,要么文本区域显示在GUI中,但没有附加滚动窗格,要么只有jlabel显示通过该方法完成的工作的结果。有人能看一下我的代码,告诉我我做错了什么,因为我已经检查了50次了,无法让GUI正常工作 p

好的,我正在尝试创建一个GUI,它有一个JScrollPane,通过JTextArea,它将一次打印一行int数组。我正在使用我为作业创建的一些方法来处理数据,并让其中一个方法处理以下示例中的数据(我无法显示这些方法,因为作业尚未到期)。这些方法已经过测试,效果良好,因此在这个问题上不需要它们。到目前为止,要么文本区域显示在GUI中,但没有附加滚动窗格,要么只有jlabel显示通过该方法完成的工作的结果。有人能看一下我的代码,告诉我我做错了什么,因为我已经检查了50次了,无法让GUI正常工作

public class MyClassName extends JFrame{

private JScrollPane myScroll;
private JTextArea myTextArea;
private JLabel myMean;
private JLabel myMedian;
private JLabel myMax;
private JLabel myMin;
private JLabel mySum;
private Container content;
private Font myFont;
private SpringLayout layout;


private MyClassName() {
    this(500,300,"TEST TITLE");
}

private MyClassName(int width, int height, String title)
{
    this.setVisible(true);
    this.setTitle(title);
    this.setSize(width, height);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    guiComponent();
}

public void guiComponent()
{
    layout = new SpringLayout();
    content = this.getContentPane();

    int [] test = {50,37,43,12,8,16,32,44,78,92,1,3,66,34};

    myTextArea = new JTextArea();

    myScroll = new JScrollPane(myTextArea);
    content.add(myScroll);

    myMean = new JLabel("MEAN : " + MyClassName.mean(test));
    for(int count : test)
    {
        String z = Integer.toString(count);
        myTextArea.append('\n' + z);
    }

    myFont = new Font("Serrif", Font.BOLD, 30);
    myMean.setFont(myFont);

    content.add(myScroll);
    layout.putConstraint(SpringLayout.WEST, myScroll, 20, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, myScroll, 25, SpringLayout.NORTH, content);

    content.add(myMean);
    layout.putConstraint(SpringLayout.WEST, myMean, 20, SpringLayout.EAST, myScroll);
    layout.putConstraint(SpringLayout.NORTH, myMean, 25, SpringLayout.NORTH, content);
}

public static double mean(int[] ar) {
    double x = 0;
    for (int i = 0; i < ar.length; i++) {
        x += ar[i];
    }
    return x / ar.length;
}

public static void main(String[] args) {

    MyClassName test2 = new MyClassName();
}
公共类MyClassName扩展了JFrame{
私人JSCROLPANE myScroll;
私人JTextArea myTextArea;
私人JLabel-myMean;
私人JLabel-myMedian;
私人JLabel myMax;
私人JLabel-myMin;
私人JLabel mySum;
私人容器内容;
私有字体myFont;
私人空间布局;
私有MyClassName(){
本(500300,“测试标题”);
}
私有MyClassName(整数宽度、整数高度、字符串标题)
{
此.setVisible(true);
这个.setTitle(title);
此.setSize(宽度、高度);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiComponent();
}
公共组件()
{
布局=新的SpringLayout();
content=this.getContentPane();
int[]检验={50,37,43,12,8,16,32,44,78,92,1,3,66,34};
myTextArea=新的JTextArea();
myScroll=新的JScrollPane(myTextArea);
content.add(myScroll);
myMean=新的JLabel(“平均值:+MyClassName.MEAN(测试));
用于(整数计数:测试)
{
字符串z=整数。toString(计数);
myTextArea.append('\n'+z);
}
myFont=新字体(“Serrif”,Font.BOLD,30);
myMean.setFont(myFont);
content.add(myScroll);
layout.putConstraint(SpringLayout.WEST,myScroll,20,SpringLayout.WEST,content);
layout.putConstraint(SpringLayout.NORTH,myScroll,25,SpringLayout.NORTH,content);
内容。添加(我的平均值);
布局.putConstraint(SpringLayout.WEST,myMean,20,SpringLayout.EAST,myScroll);
layout.putConstraint(SpringLayout.NORTH,myMean,25,SpringLayout.NORTH,content);
}
公共静态双平均值(int[]ar){
双x=0;
for(int i=0;i
当您需要在布局中显示组件时,要解决问题,请在初始化“myTextArea”组件后添加这三行:

myTextArea.setColumns(20);
myTextArea.setRows(5);
getContentPane().setLayout(layout);

您可能需要阅读此内容。

当您需要在布局中显示组件时,您的问题是,要解决您的问题,请在初始化“myTextArea”组件后添加这三行:

myTextArea.setColumns(20);
myTextArea.setRows(5);
getContentPane().setLayout(layout);

您可能需要阅读此内容。

考虑添加一个
公共静态void main(字符串args[])
作为一个用户,人们可以复制粘贴和测试您的代码..我添加了main,也是我在本例中使用的1方法OK,所以我重新启动了netbeans,现在它在GUI中弹出了文本区域和滚动窗格,但它们占据了整个GUI,即使我向文本区域添加了一个大小参数,以及jlabel,它应该位于e文本区域,仍然没有考虑添加
公共静态void main(字符串args[])
作为一个用户,人们可以复制粘贴和测试您的代码..我添加了main,也是我在本例中使用的1方法OK,所以我重新启动了netbeans,现在它在GUI中弹出了文本区域和滚动窗格,但它们占据了整个GUI,即使我向文本区域添加了一个大小参数,以及jlabel,它应该位于e文本区域,仍然不是很好!这至少解决了scrollPanel的问题。除非你抓住GUI窗口的一角并移动它,否则JLabel仍然不会出现在它旁边,你知道为什么会这样吗?实际上,我在你给我的链接上读到了信息,并且刚刚使用了。isVisible();现在它显示出来了,再次感谢!事实上,不,这也不起作用,jlabel只在您第一次运行程序时弹出,之后,它似乎消失了,这真的很奇怪,我现在看到您使用main方法在代码中进行了更新,但您可以移动
setVisible(true);
到默认承包商,或将初始test2变量的行替换为此行
新MyClassName().setVisible(true);
放置此.setVisible(true);在我的guiComponent方法中修复了它,谢谢。我本来就在那里,但在我之前试图解决问题时移动了它。太棒了!这至少修复了滚动面板问题。除非你抓住GUI窗口的一个角落并移动它,否则JLabel仍然不会出现在它旁边,你知道为什么会发生这种情况吗?实际上,我在t你给我的链接,刚刚使用了.isVisible();现在它显示出来了,再次感谢!实际上,不,这也不起作用,jlabel只在你第一次运行程序时弹出,之后,它似乎消失了,这真的很奇怪,我现在看到你用main方法在代码中更新了,但是你可以移动
setVisible(true);
默认承包商,或将初始test2变量的行替换为此行
new MyClassName().setVisible(true);
将其放入.setVisible(true);在我的guiComponent方法中修复了它,谢谢。我最初将其放在那里,但在我之前尝试解决问题时将其移动。