Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package javaapplication74;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class APanel extends JScrollPane {
- int width = 0;
- public static String getRandomMultilineText() {
- String filler = "";
- int words = (int) (Math.random() * 7) + 1;
- for ( int w = 0 ; w < words ; w++ ) {
- int lettersInWord = (int) (Math.random() * 12) + 1;
- for ( int l = 0 ; l < lettersInWord ; l++ ) {
- filler += "a";
- }
- filler += "\n";
- }
- return filler.trim();
- }
- public APanel() {
- super();
- setAlignmentX( LEFT_ALIGNMENT );
- setAlignmentY( TOP_ALIGNMENT );
- final Box B = Box.createVerticalBox();
- B.setAlignmentX( LEFT_ALIGNMENT );
- B.setAlignmentY( TOP_ALIGNMENT );
- for ( int i = 0 ; i < 4 ; i++ ) {
- B.add( new CPanel() {
- //Important!!! Make sure the width always fits the screen
- public Dimension getPreferredSize() {
- Dimension result = super.getPreferredSize();
- result.width = width - 20; // 20 is for the scroll bar width
- return result;
- }
- } );
- }
- setViewportView( B );
- //Important!!! Need to invalidate the Scroll pane, othewise it
- //doesn't try to lay out when the container is shrunk
- addComponentListener( new ComponentAdapter() {
- public void componentResized( ComponentEvent ce ) {
- width = getWidth();
- B.invalidate();
- }
- } );
- }
- // nothing really very special in this class - mostly here for demonstration
- public static class CPanel extends JPanel {
- public CPanel() {
- super( new WrapLayout( WrapLayout.LEFT ) );
- setOpaque( true );
- setBackground( Color.gray );
- setAlignmentY( TOP_ALIGNMENT );
- setAlignmentX( LEFT_ALIGNMENT );
- int wordGroups = (int) (Math.random() * 14) + 7;
- //Adding test data (TextAreas)
- for ( int i = 0 ; i < wordGroups ; i++ ) {
- JTextArea ta = new JTextArea( getRandomMultilineText() );
- ta.setAlignmentY( TOP_ALIGNMENT );
- add( ta );
- }
- setBorder( BorderFactory.createTitledBorder( "Lovely container" ) );
- }
- }
- public static void main( String[] args ) {
- final JFrame frame = new JFrame();
- frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
- frame.add( new APanel() );
- frame.pack();
- frame.setSize( 400 , 300 );
- frame.setLocationRelativeTo( null );
- frame.setVisible( true );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement