Solved

JTable & scroll pane to stretch to fill the panel

Posted on 2010-09-17
2
2,410 Views
Last Modified: 2013-11-23
How do I get the table & scroll pane to stretch to fill the panel as it is resized?
(Resized using the mouse).
package tableStretch;

import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableModel;

/**
 * JPanel with JTable
 */
public class MyPanel extends JPanel {

	private JTable jTable;

	private DefaultTableModel defaultTableModel;

	private String[] columnNameArray = {"One", "Two", "Three"};

	private Object[][]  dataArray = { 
			{ "", "", ""},
			{ "", "", ""},
			{ "", "", ""},
			{ "", "", ""},
	};

	/**
	 * constructor
	 * 
	 */
	public MyPanel () {

		super();

		defaultTableModel = new DefaultTableModel(dataArray, columnNameArray);

		jTable = new JTable (defaultTableModel); 

		setLayout();

		setListeners();

	}

	/**
	 * set layout of components
	 */
	public void setLayout() {

		jTable.setFillsViewportHeight(true);

		JScrollPane jScrollPane = new JScrollPane(jTable);
		jScrollPane.getViewport().setPreferredSize(jTable.getPreferredSize());

		Border loweredbevel = BorderFactory.createLoweredBevelBorder();
		jScrollPane.setBorder(loweredbevel);

		jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

		this.add(jScrollPane, BorderLayout.CENTER);
	}

	/**
	 * set listeners
	 */
	public void setListeners() {

	}

	/**
	 * @return defaultTableModel
	 */
	public DefaultTableModel getDefaultTableModel() {
		return defaultTableModel;
	}


	/**
	 * 
	 * @param defaultTableModel
	 */
	public void setDefaultTableModel(DefaultTableModel defaultTableModel) {

		this.defaultTableModel = defaultTableModel;
		jTable.setModel(defaultTableModel);

	}

	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {

		try{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		}
		catch (Exception e){
			e.printStackTrace();
		}

		final MyPanel jPanel = new MyPanel();
		final JFrame frame = new JFrame();
		frame.add(jPanel, BorderLayout.CENTER);
		frame.setTitle("My Panel");
		//		frame.setPreferredSize(new Dimension(500, 250));
		frame.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
			}
		});

		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		frame.setLocation(300, 200);
		frame.pack();
		frame.setVisible(true);

	}

}

Open in new window

0
Comment
Question by:allelopath
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
2 Comments
 
LVL 4

Accepted Solution

by:
jlar310 earned 500 total points
ID: 33703432
in setLayout() add

this.setLayout(new BorderLayout());

You need to give each panel a layout manager before the contraints in the add() calls have any meaning.
0
 
LVL 4

Expert Comment

by:jlar310
ID: 33703474
A little more info: If you don't call setLayout(someLayoutManager), the default layout for a container is FlowLayout.
0

Featured Post

[Webinar] Code, Load, and Grow

Managing multiple websites, servers, applications, and security on a daily basis? Join us for a webinar on May 25th to learn how to simplify administration and management of virtual hosts for IT admins, create a secure environment, and deploy code more effectively and frequently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Better way to make a string with template variables in java 3 48
Chrome and Firefox Java 5 86
Bot application - advice 3 78
American Express @Work site and Java 4 87
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
Suggested Courses

740 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question