0

OK、JTextArea を介して一度に 1 行ずつ int の配列を出力する JScrollPane を持つ GUI を作成しようとしています。データを処理する課題用に作成したいくつかのメソッドを使用しており、そのうちの 1 つを次の例のデータに使用しています (まだ期限が来ていない宿題のため、メソッドを表示できません)。メソッドはテスト済みで正常に動作するため、この質問では必要ありません。これまでのところ、テキスト領域は GUI に表示されますが、スクロール ペインが接続されていないか、jlabel のみがメソッドを介して行われた作業の結果と共に表示されます。誰かが私のコードを見て、私が何を間違っているのか教えてもらえますか。

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();
}
4

1 に答える 1

4

コンポーネントをレイアウトで表示する必要がある場合の問題を解決するには、「myTextArea」コンポーネントを初期化した後にこれらの 3 行を追加します。

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

Layout に関するこのリンクを読む必要があるかもしれません。

于 2013-09-22T03:52:31.123 に答える