JScrollPane不使用JPanel

时间:2016-09-18 08:18:06

标签: java swing jpanel jscrollpane japplet

我尝试使用JTextArea添加滚动条,但它无效,内容超出了textArea。我已经关注了几篇文章,但没有找到JPanel的任何示例,JFrame提供了所有示例。目前我们仅限于使用JFrame,因此我们必须在不使用它的情况下执行此操作。请找到以下代码,了解我如何尝试使用teatArea实现滚动,请指导我做错了什么。将不胜感激。

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 

1 个答案:

答案 0 :(得分:0)

您的GroupLayout不要将scroll添加到布局,而是textArea

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

尝试添加scroll之类的

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