I'm trying to add the scrollbar with the JTextArea
but it is not working and the content goes out of the textArea. I have followed the several articles but didn't find any example with the JPanel all the examples are available with the JFrame
. Currently we are restricted to use the JFrame
so we have to do this without using it. Please find the below code that's how I'm trying to implement the scroll with teatArea and please guide me what I'm doing wrong. Help will be appreciated.
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
Your GroupLayout
don't add the scroll
to the layout, but the textArea
:
.addComponent(textArea, GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)
Try to add the scroll
like
.addComponent(scroll, GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)