После добавления JTextArea в JScrollPane здесь:
scroll = new JScrollPane(display);
Вам не нужно снова добавлять его в другой контейнер, как вы:
middlePanel.add(display);
Просто удалите последнюю строку кода, и все заработает. Как это:
middlePanel=new JPanel();
middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area"));
// create the middle panel components
display = new JTextArea(16, 58);
display.setEditable(false); // set textArea non-editable
scroll = new JScrollPane(display);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
//Add Textarea in to middle panel
middlePanel.add(scroll);
JScrollPane — это еще один контейнер, который размещает полосы прокрутки вокруг вашего компонента, когда это необходимо, а также имеет собственный макет. Все, что вам нужно сделать, когда вы хотите обернуть что-либо в прокрутку, просто передать это в конструктор JScrollPane:
new JScrollPane( myComponent )
или установить вид следующим образом:
JScrollPane pane = new JScrollPane ();
pane.getViewport ().setView ( myComponent );
Дополнительно:
Вот полностью рабочий пример, так как вы все еще не заработали:
public static void main ( String[] args )
{
JPanel middlePanel = new JPanel ();
middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) );
// create the middle panel components
JTextArea display = new JTextArea ( 16, 58 );
display.setEditable ( false ); // set textArea non-editable
JScrollPane scroll = new JScrollPane ( display );
scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
//Add Textarea in to middle panel
middlePanel.add ( scroll );
// My code
JFrame frame = new JFrame ();
frame.add ( middlePanel );
frame.pack ();
frame.setLocationRelativeTo ( null );
frame.setVisible ( true );
}
И вот что вы получите:
person
Mikle Garin
schedule
16.04.2012