2013-09-22 3 views
0

ОК, я пытаюсь создать графический интерфейс с JScrollPane, который через JTextArea выведет массив из ints по одной строке за раз. Я использую некоторые методы, которые я создал для назначения для обработки данных, и один из них работает с данными в следующем примере (я не могу показать методы, потому что это домашняя работа, которая еще не наступила). Методы были протестированы и работают нормально, поэтому в этом вопросе не нужно. Пока что текстовая область будет отображаться в графическом интерфейсе, но не будет прикреплена к ней панель прокрутки, или будет отображаться только jlabel с результатами работы, выполненной с помощью метода. Может кто-то взглянуть на мой код и рассказать мне, что я делаю неправильно, потому что я прошел через это как 50 раз и не могу заставить графический интерфейс вести себя.JScrollPane не работает в 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(); 
} 
+1

Рассмотрите возможность добавления public public void main (String args []) 'для [SSCCE] (http://www.sscce.org), чтобы люди могли скопировать пасту и протестировать ваш код. – nachokk

+0

Я добавил main, а также 1 метод, который я использую в этом примере –

+0

ОК, поэтому я перезапустил netbeans, и теперь его текстовая область и scrollpane появляются в графическом интерфейсе, но они занимают весь графический интерфейс, даже когда я добавляю параметр размера в текстовую область, и jlabel, который должен быть справа от текстовой области, все еще не существует –

ответ

4

Ваша проблема, когда вам нужно отобразить компоненты в макете, чтобы решить вашу проблему добавить эти три строки после того, как компонент ИНИЦИАЛИЗИРУЙТЕ «myTextArea»:

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

вам, возможно, нужно прочитать эту link about Layout.

+0

Удивительный! Это, по крайней мере, устранило проблему scrollPanel. JLabel по-прежнему не появляется рядом с ним, если вы не заберете угол окна GUI и не переместите его, любая идея, почему это происходит? –

+0

Собственно, я прочитал информацию по ссылке, которую вы мне дали, и просто использовал .isVisible(); и теперь это показывает, поэтому еще раз спасибо! –

+0

На самом деле, нет, это тоже не сработало, jlabel появляется только при первом запуске программы, после чего он просто исчезает, что действительно странно –

Смежные вопросы