I have again a problem with the scrollpane in Java. I just want to combine a JTextArea with a ScrollPane. I did it as usually, but this time it isn't working.
Here is the part of code which matters (please let me know, if you need more):
rightWindow.add(rightWindowMaximumWidth, BorderLayout.CENTER); //does it matter if I call this at the beginning or at the end ?
...
rightUpTextArea = new JTextArea();
rightUpScrollPane = new JScrollPane(rightUpTextArea);
...
rightWindowMaximumWidth.add(rightUpScrollPane, "Up"); //Jpanel
I filled the TextArea with a lot of text, but there isn't a scrollpane. Maybe it is obvious, but I can't find the mistake.
Edit: here ist the complete code (the code frome abouve is in the methode setupRight() and setupRightOben()):
private void setupRightSide(){
//rightWindow
rightWindow = new JPanel(new BorderLayout(10,10));
rightWindowMaximumWidth = new JPanel();
rightWindowSplit = new BoxLayout(rightWindowMaximumWidth, BoxLayout.Y_AXIS);//"rightWindow" is the parent, not "windowContainer"!!!
rightUp = new JPanel();
rightUpTextArea = new JTextArea();
rightUpScrollPane = new JScrollPane(rightUpTextArea);
rightDownBoxPanel = new JPanel();
rightDownBox = new BoxLayout(rightDownBoxPanel, BoxLayout.X_AXIS);//"rightDownBoxPanel" is the parent, not "rightWindow"!!!
rightDownTextArea = new JTextArea();
rightDownTextAreaScrollPane = new JScrollPane(rightDownTextArea);
rightDownButtomSend = new JButton("Send");
//rightUpScrollPane.setAutoscrolls(true);
windowContainer.add(rightWindow, BorderLayout.CENTER);
//rechte Seite
rightWindow.setPreferredSize(new Dimension(250,250));
rightWindow.setSize(new Dimension(424,503)); // habe ich durch datenausgabe mit der Konsole herrausgefundem
rightWindow.add(rightWindowMaximumWidth, BorderLayout.CENTER);
//container in "rechte Seite" mit maximaler width von 1000px
rightWindowMaximumWidth.setLayout(rightWindowSplit);
rightWindowMaximumWidth.setPreferredSize(new Dimension(rightWindow.getWidth()-10,1000));
rightWindowMaximumWidth.setMaximumSize(new Dimension(1000,Integer.MAX_VALUE));
rightWindowMaximumWidth.add(rightUpScrollPane, "Up");
rightWindowMaximumWidth.add(Box.createRigidArea(new Dimension(0,10)));
rightWindowMaximumWidth.add(rightDownBoxPanel, "Down");
rightWindowMaximumWidth.add(Box.createRigidArea(new Dimension(0,10)));
setupRechtsOben();
setupRechtsUnten();
}
private void setupRechtsOben(){
//obere Teil der rechten Seite
rightUp.setPreferredSize(new Dimension(420 , 400));
rightUp.setMaximumSize(new Dimension(420,400));
// rightUp.add(rightUpScrollPane);
//TextFeld rechts-oben
rightUpTextArea.setBorder( new CompoundBorder(new javax.swing.border.LineBorder(Color.BLACK), new EmptyBorder(15, 15, 15, 15)));
rightUpTextArea.setEditable(false);
rightUpTextArea.setLineWrap(true);
rightUpTextArea.setWrapStyleWord(true);
rightUpTextArea.setBackground(Color.lightGray);
rightUpTextArea.setPreferredSize(new Dimension(420,350));//-2 damit der rand zu sehen ist
rightUpTextArea.setMaximumSize(rightWindowMaximumWidth.getMaximumSize());
rightUpTextArea.setText("d\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\n"); //to fill it with text
}
private void setupRechtsUnten(){
//untere Teil der rechten Seite (vertikales BoyLayout)
rightDownBoxPanel.setLayout(rightDownBox);
rightDownBoxPanel.add(rightDownTextAreaScrollPane, "TextField");
rightDownBoxPanel.add(Box.createRigidArea(new Dimension(10,0)));
rightDownBoxPanel.add(rightDownButtomSend, "SendButton");
rightDownBoxPanel.setMaximumSize(new Dimension(1000,100));
rightDownBoxPanel.setPreferredSize(new Dimension(1000 ,100));
//TextEingabe im BoxLayout
rightDownTextArea.setBorder(new javax.swing.border.LineBorder(Color.BLACK));
//Damit es in der nächsten Zeile weitergeht, wenn diese voll ist
rightDownTextArea.setLineWrap(true);
rightDownTextArea.setWrapStyleWord(true);
//SendButton im BoxLayout
rightDownButtomSend.setSize(new Dimension(100, 50));
rightDownButtomSend.setPreferredSize(new Dimension(100, 50));
rightDownButtomSend.setMaximumSize(new Dimension(100, 50));
rightDownButtomSend.setFont(new Font("Arial", Font.BOLD, 14));
rightDownButtomSend.setAlignmentX(frame.CENTER_ALIGNMENT);
}
The problem is (still) not in the code you've posted, either the original code nor the extra code. I created a class which leaves all your code the way it is, makes instance variables of all the ones that don't have declarations for, and instantiates the frame that your code uses but doesn't initialize. It creates a scrollPane around a text area just fine. I leave it here for your study if you need it; the problem is elsewhere.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
public class PanelPlay
{
JFrame windowContainer;
JPanel rightWindow;
JPanel rightWindowMaximumWidth;
private BoxLayout rightWindowSplit;
private JPanel rightUp;
private JTextArea rightUpTextArea;
private JScrollPane rightUpScrollPane;
private JPanel rightDownBoxPanel;
private BoxLayout rightDownBox;
private JTextArea rightDownTextArea;
private JScrollPane rightDownTextAreaScrollPane;
private JButton rightDownButtomSend;
public static void main(String ... arguments)
{
PanelPlay pp = new PanelPlay();
pp.go();
}
public void go()
{
windowContainer = new JFrame();
setupRightSide();
windowContainer.pack();
windowContainer.setVisible(true);
}
private void setupRightSide(){
//rightWindow
rightWindow = new JPanel(new BorderLayout(10,10));
rightWindowMaximumWidth = new JPanel();
rightWindowSplit = new BoxLayout(rightWindowMaximumWidth, BoxLayout.Y_AXIS);//"rightWindow" is the parent, not "windowContainer"!!!
rightUp = new JPanel();
rightUpTextArea = new JTextArea();
rightUpScrollPane = new JScrollPane(rightUpTextArea);
rightDownBoxPanel = new JPanel();
rightDownBox = new BoxLayout(rightDownBoxPanel, BoxLayout.X_AXIS);//"rightDownBoxPanel" is the parent, not "rightWindow"!!!
rightDownTextArea = new JTextArea();
rightDownTextAreaScrollPane = new JScrollPane(rightDownTextArea);
rightDownButtomSend = new JButton("Send");
//rightUpScrollPane.setAutoscrolls(true);
windowContainer.add(rightWindow, BorderLayout.CENTER);
//rechte Seite
rightWindow.setPreferredSize(new Dimension(250,250));
rightWindow.setSize(new Dimension(424,503)); // habe ich durch datenausgabe mit der Konsole herrausgefundem
rightWindow.add(rightWindowMaximumWidth, BorderLayout.CENTER);
//container in "rechte Seite" mit maximaler width von 1000px
rightWindowMaximumWidth.setLayout(rightWindowSplit);
rightWindowMaximumWidth.setPreferredSize(new Dimension(rightWindow.getWidth()-10,1000));
rightWindowMaximumWidth.setMaximumSize(new Dimension(1000,Integer.MAX_VALUE));
rightWindowMaximumWidth.add(rightUpScrollPane, "Up");
rightWindowMaximumWidth.add(Box.createRigidArea(new Dimension(0,10)));
rightWindowMaximumWidth.add(rightDownBoxPanel, "Down");
rightWindowMaximumWidth.add(Box.createRigidArea(new Dimension(0,10)));
setupRechtsOben();
setupRechtsUnten();
}
private void setupRechtsOben(){
//obere Teil der rechten Seite
rightUp.setPreferredSize(new Dimension(420 , 400));
rightUp.setMaximumSize(new Dimension(420,400));
// rightUp.add(rightUpScrollPane);
//TextFeld rechts-oben
rightUpTextArea.setBorder( new CompoundBorder(new javax.swing.border.LineBorder(Color.BLACK), new EmptyBorder(15, 15, 15, 15)));
rightUpTextArea.setEditable(false);
rightUpTextArea.setLineWrap(true);
rightUpTextArea.setWrapStyleWord(true);
rightUpTextArea.setBackground(Color.lightGray);
rightUpTextArea.setPreferredSize(new Dimension(420,350));//-2 damit der rand zu sehen ist
rightUpTextArea.setMaximumSize(rightWindowMaximumWidth.getMaximumSize());
rightUpTextArea.setText("d\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\nd\n"); //to fill it with text
}
private void setupRechtsUnten(){
//untere Teil der rechten Seite (vertikales BoyLayout)
rightDownBoxPanel.setLayout(rightDownBox);
rightDownBoxPanel.add(rightDownTextAreaScrollPane, "TextField");
rightDownBoxPanel.add(Box.createRigidArea(new Dimension(10,0)));
rightDownBoxPanel.add(rightDownButtomSend, "SendButton");
rightDownBoxPanel.setMaximumSize(new Dimension(1000,100));
rightDownBoxPanel.setPreferredSize(new Dimension(1000 ,100));
//TextEingabe im BoxLayout
rightDownTextArea.setBorder(new javax.swing.border.LineBorder(Color.BLACK));
//Damit es in der nächsten Zeile weitergeht, wenn diese voll ist
rightDownTextArea.setLineWrap(true);
rightDownTextArea.setWrapStyleWord(true);
//SendButton im BoxLayout
rightDownButtomSend.setSize(new Dimension(100, 50));
rightDownButtomSend.setPreferredSize(new Dimension(100, 50));
rightDownButtomSend.setMaximumSize(new Dimension(100, 50));
rightDownButtomSend.setFont(new Font("Arial", Font.BOLD, 14));
rightDownButtomSend.setAlignmentX(JFrame.CENTER_ALIGNMENT);
}
}
Unlike your code, you can compile this and run it, and see the scrollPane created.