2016-09-18 67 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)