2016-09-18 3 views
0

Я пытаюсь добавить полосу прокрутки с помощью JTextArea, но она не работает, и содержимое выходит за рамки textArea. Я следил за несколькими статьями, но не нашел никакого примера с JPanel, все примеры доступны с JFrame. В настоящее время нам запрещено использовать JFrame, поэтому мы должны это сделать, не используя его. Пожалуйста, найдите нижеприведенный код, как я пытаюсь реализовать свиток с teatArea и, пожалуйста, назовите меня, что я делаю неправильно. Помощь будет оценена.JScrollPane не работает с JPanel

GUI of below code

Код

public class CreatePanel extends JPanel 
{ 
    private Vector athleteList; 
    private CountPanel cPanel; 

    private JTextField txt_firstName; 
    private JTextField txt_lastName; 
    private JTextField txt_sport; 

    private JButton btnNewButton; 

    private JLabel lbl_error; 
    private JLabel lblNewLabel; 
    private JLabel lblNewLabel_1; 
    private JLabel lblNewLabel_2; 
    private JList list; 
    private JTextArea textArea; 
//Constructor initializes components and organize them using certain layouts 
public CreatePanel(Vector athleteList, CountPanel cPanel) 
    { 
    this.athleteList = athleteList; 
    this.cPanel = cPanel; 
    ButtonListener buttonListener = new ButtonListener(); 
    //organize components here 

    txt_firstName = new JTextField(); 
    txt_firstName.setColumns(10); 

    txt_lastName = new JTextField(); 
    txt_lastName.setColumns(10); 

    txt_sport = new JTextField(); 
    txt_sport.setColumns(10); 

    lblNewLabel = new JLabel("First Name"); 
    lblNewLabel_1 = new JLabel("Last Name"); 
    lblNewLabel_2 = new JLabel("Sport"); 

    lbl_error = new JLabel("error"); 
    lbl_error.setForeground(Color.RED); 
    lbl_error.setVisible(false); 

    list = new JList<Athlete>(); 

    btnNewButton = new JButton("Create an Athlete"); 
    btnNewButton.addActionListener(new ButtonListener()); 


    textArea = new JTextArea(16,58); 
    JScrollPane scroll = new JScrollPane (textArea); 
    scroll.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    textArea.setEditable(false); 

    add(scroll); 
    GroupLayout groupLayout = new GroupLayout(this); 
    groupLayout.setHorizontalGroup(
     groupLayout.createParallelGroup(Alignment.LEADING) 
      .addGroup(groupLayout.createSequentialGroup() 
       .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) 
        .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) 
         .addGroup(groupLayout.createSequentialGroup() 
          .addContainerGap() 
          .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) 
           .addComponent(lblNewLabel) 
           .addComponent(lblNewLabel_1) 
           .addComponent(lblNewLabel_2)) 
          .addGap(53) 
          .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) 
           .addComponent(txt_firstName, GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE) 
           .addComponent(txt_lastName, GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE) 
           .addComponent(txt_sport, GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE))) 
         .addGroup(groupLayout.createSequentialGroup() 
          .addGap(59) 
          .addComponent(btnNewButton))) 
        .addGroup(groupLayout.createSequentialGroup() 
         .addContainerGap() 
         .addComponent(lbl_error))) 
       .addGap(5) 
       .addComponent(textArea, GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE) 
       .addContainerGap()) 
    ); 
    groupLayout.setVerticalGroup(
     groupLayout.createParallelGroup(Alignment.LEADING) 
      .addGroup(groupLayout.createSequentialGroup() 
       .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) 
        .addGroup(groupLayout.createSequentialGroup() 
         .addGap(47) 
         .addComponent(lbl_error) 
         .addGap(53) 
         .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) 
          .addComponent(txt_firstName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) 
          .addComponent(lblNewLabel)) 
         .addPreferredGap(ComponentPlacement.UNRELATED) 
         .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING) 
          .addComponent(lblNewLabel_1) 
          .addComponent(txt_lastName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) 
         .addPreferredGap(ComponentPlacement.UNRELATED) 
         .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) 
          .addComponent(txt_sport, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) 
          .addComponent(lblNewLabel_2)) 
         .addPreferredGap(ComponentPlacement.UNRELATED) 
         .addComponent(btnNewButton)) 
        .addGroup(groupLayout.createSequentialGroup() 
         .addContainerGap() 
         .addComponent(textArea, GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))) 
       .addContainerGap()) 
    ); 
    setLayout(groupLayout); 
    } 


    //ButtonListener is a listener class that listens to 
    //see if the button "Create an Athlete" is pushed. 
    //When the event occurs, it adds an athlete using the information 
    //entered by a user. 
    //It also performs error checking. 
    private class ButtonListener implements ActionListener 
    { 
    public void actionPerformed(ActionEvent event) 
    { 

     //TO BE COMPLETED 
     if(txt_firstName.getText().length() == 0 || txt_lastName.getText().length() == 0 || txt_sport.getText().length() == 0) 
     { 
      lbl_error.setText("Please enter all fields."); 
      lbl_error.setVisible(true); 
     } 
     else 
     { 
      Athlete athlete = new Athlete(); 
      athlete.setFirstName(txt_firstName.getText()); 
      athlete.setLastName(txt_lastName.getText()); 
      athlete.setSport(txt_sport.getText()); 
      athleteList.add(athlete); 
      textArea.setText(textArea.getText().concat(athlete.toString())); 
      lbl_error.setText("athlete added."); 
      //clearControls(); 
     } 
    } //end of actionPerformed method 
    } //end of ButtonListener class 

    private void clearControls() 
    { 
    txt_firstName.setText(""); 
    txt_lastName.setText(""); 
    txt_sport.setText(""); 
    } 
} //end of CreatePanel class 

ответ

0

GroupLayout Ваш не добавить scroll в макет, но textArea:

.addComponent(textArea, GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE) 

Попробуйте добавить scroll как

.addComponent(scroll, GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE) 
Смежные вопросы