Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8389411
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T18:43:10+00:00 2026-06-09T18:43:10+00:00

I currently have a simple java GUI with 2 Jpanels, namely panel1 & panel

  • 0

I currently have a simple java GUI with 2 Jpanels, namely panel1 & panel 2. panel1 is used for image display and labelling display, it works without a problem.

panel 2 is used to display data in a JTable. The problem I am having is displaying all data in the table without the vertical scroll pane, as opposed to a section of the table with a scroll pane. This is causing a nasty gap in the GUI and I wish to correct it by displaying all table data at once.

I have tried using the setPrefferedSize on the panel containing the table, on the table itself and also on the scroll pane, and now im at all loss! Any suggestions are most appreciated as always.

import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.BufferedImage;
import java.util.*;
import javax.swing.table.DefaultTableCellRenderer;

public class GUI2 extends JFrame {

    public int PADDING = 10;
    public GUI2() {

        initUI();
    }

    public final void initUI() {

        // Menu Bar and Menu Items setup
        JMenuBar menuBar;
        JMenu menu;
        JMenuItem menuItem;

        menuBar = new JMenuBar();
        menu = new JMenu("Menu");
        menuBar.add(menu);

        JMenuItem menuNew = new JMenuItem("New");
        menu.add(menuNew);
        JMenuItem menuOpen = new JMenuItem("Open");
        menu.add(menuOpen);
        JMenuItem menuSave = new JMenuItem("Save");
        menu.add(menuSave);
        JMenuItem menuExit = new JMenuItem("Exit");
        menu.add(menuExit);

        setLayout(new GridLayout(4,1));
        setJMenuBar(menuBar);


        JPanel jp1 = new JPanel(new BorderLayout());
        jp1.setBorder(BorderFactory.createEmptyBorder(PADDING, PADDING, PADDING, PADDING));
        jp1.setBorder(BorderFactory.createLineBorder(Color.black));
        jp1.setPreferredSize(new Dimension(800, 300));

        // Create subpanels
        JPanel sp1 = new JPanel();
        JPanel sp2 = new JPanel(new GridLayout(8, 2));
        sp1.setBorder(BorderFactory.createLineBorder(Color.black));

        // Set up sub panel 1
        BufferedImage myPicture = null;
        try{
            myPicture = ImageIO.read(new File("bat.jpg"));
        }catch(IOException e){
            System.out.println("Image not Loaded!");
            e.printStackTrace();
        }

        JLabel picLabel             = new JLabel(new ImageIcon( myPicture ));
        jp1.add(picLabel);


        // For sub panel 2
        JLabel label_location       = new JLabel("Location: ");
        JLabel label_datetime       = new JLabel("Date & Time: ");
        JLabel label_measurementNum = new JLabel("Measurement Number: ");
        JLabel label_vehicleType    = new JLabel("Vehicle Type: ");
        JLabel label_temperature    = new JLabel("Temperature: ");
        JLabel label_weather        = new JLabel("Weather Conditions: ");
        JLabel label_testPersons    = new JLabel("Test Persons: ");
        JLabel label_testType       = new JLabel("Test Type: ");

        String timestamp            = " ";
        Date date                   = new Date();
        timestamp                   = date.toString();


        JTextField  location        = new JTextField();
        JLabel      datetime        = new JLabel(timestamp);
        JLabel      measurementNum  = new JLabel("AZUWADA87623Q");          
        JLabel      vehicleType     = new JLabel("Batmobile");                   
        JTextField  temperature     = new JTextField(); 
        JTextField  weather         = new JTextField();
        JTextField  testPersons     = new JTextField();
        JTextField  testType        = new JTextField();



        sp1.add(picLabel);
        sp2.add(label_location);
        sp2.add(location);
        sp2.add(label_datetime);
        sp2.add(datetime);
        sp2.add(label_measurementNum);
        sp2.add(measurementNum);
        sp2.add(label_vehicleType);
        sp2.add(vehicleType);
        sp2.add(label_temperature);
        sp2.add(temperature);
        sp2.add(label_weather);
        sp2.add(weather);
        sp2.add(label_testPersons);
        sp2.add(testPersons);
        sp2.add(label_testType);
        sp2.add(testType);



        label_location.setHorizontalAlignment(SwingConstants.LEFT);                         



        jp1.add(sp1, BorderLayout.WEST);
        jp1.add(sp2, BorderLayout.EAST);

        add(jp1);



        JPanel jp2 = new JPanel();
        jp2.setPreferredSize(new Dimension(900, 900));


        String[] columnNames = {"", "DAW Referernce Scale", " WIM Vehicle 1"}; 
        Object[][] data = { {"Vehicle Summary", new Integer(100), new Integer(200)},  // Header 1: Green
                            {"Axle Numbers", new Integer(100), new Integer(200)},
                            {"Axle Code", new Integer(100), new Integer(200)},
                            {"Axle Distances (cm)", new Integer(100), new Integer(200)},
                            {"Vehicle Speed (km/h)", new Integer(100), new Integer(200)},
                            {"Gross Weight", new Integer(100), new Integer(200)}, 
                            {"Axle Weight 1", new Integer(100), new Integer(200)},
                            {"Axle Weight 2", new Integer(100), new Integer(200)},

                            // Measurements for Axle 1
                            // Weights
                            {"Axle 1", new Integer(100), new Integer(200)},   // Header 1: Green
                            {"Weights (kg)", " ", " "},
                            {"Axle Weights AW1", new Integer(100), new Integer(200)},
                            {"Wheel Weights WW1R", new Integer(100), new Integer(200)},
                            {"Wheel Weights WW1L", new Integer(100), new Integer(200)},
                            // Dimensions
                            {"Dimensions (cm or cm2)", new Integer(100), new Integer(200)},
                            {"Axle Width AW1", new Integer(100), new Integer(200), new Integer(200)}, 
                            {"Tire Footprints 1R Length", new Integer(100), new Integer(200)},
                            {"Tire Footprints 1R Width", new Integer(100), new Integer(200)},
                            {"Tire Footprints 1R FootPrint", new Integer(100), new Integer(200)},
                            {"Tire Footprints 1L Length", new Integer(100), new Integer(200)},
                            {"Tire Footprints 1L Width", new Integer(100), new Integer(200)},
                            {"Tire Footprints 1L FootPrint", new Integer(100), new Integer(200)},
                            // Speed
                            {"Speed", " ", " "},
                            {"Vehicle Speed", new Integer(100), new Integer(200)},
                            {"Axle Speed", new Integer(100), new Integer(200)},
                            {"Tyre Speed 1R", new Integer(100), new Integer(200)},
                            {"Tyre Speed 1L", new Integer(100), new Integer(200)},

                            // Measurements for Axle 2
                            // Weights
                            {"Axle 2", " ", " "},   // Header 1: Green
                            {"Weights (kg)", " ", " "},
                            {"Axle Weights AW2", new Integer(100), new Integer(200)},
                            {"Wheel Weights WW2R", new Integer(100), new Integer(200)},
                            {"Wheel Weights WW2L", new Integer(100), new Integer(200)},
                            // Dimensions
                            {"Dimensions (cm or cm2)", " ", " "},
                            {"Axle Width AW2", new Integer(100), new Integer(200)}, 
                            {"Tire Footprints 2R Length", new Integer(100), new Integer(200)},
                            {"Tire Footprints 2R Width", new Integer(100), new Integer(200)},
                            {"Tire Footprints 2R FootPrint", new Integer(100), new Integer(200)},
                            {"Tire Footprints 2L Length", new Integer(100), new Integer(200)},
                            {"Tire Footprints 2L Width", new Integer(100), new Integer(200)},
                            {"Tire Footprints 2L FootPrint", new Integer(100), new Integer(200)},
                            // Speed
                            {"Speed", " ", " "},
                            {"Vehicle Speed", new Integer(100), new Integer(200)},
                            {"Axle Speed", new Integer(100), new Integer(200)},
                            {"Tyre Speed 2R", new Integer(100), new Integer(200)},
                            {"Tyre Speed 2L", new Integer(100), new Integer(200)},};


        final JTable table = new JTable(data, columnNames); 

        table.getColumnModel().getColumn(0).setCellRenderer(new CustomRenderer());
        table.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
        table.setFillsViewportHeight(true); 

        JScrollPane scrollPane = new JScrollPane(table); 

        jp2.add(scrollPane);
        add(scrollPane);


        setSize(400,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

    }

            //Custom Renderer - does the default rendering except if told the row should be a different color
    public static class CustomRenderer extends DefaultTableCellRenderer{

        public CustomRenderer(){
            super();
            //Customize the rendering however you want
            setBackground(UIManager.getColor("TableHeader.background"));
        }
    }


    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                try {
                    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                } catch (Exception e) {
                    e.printStackTrace();
                }

                GUI2 ex = new GUI2();
                ex.setVisible(true);
            }
        });
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T18:43:12+00:00Added an answer on June 9, 2026 at 6:43 pm

    If I understand correctly you want to make JTable stretch vertical to take all free space below top panel.
    If so you need to change layout manager.
    Now you use Gridlayout with 4 rows. GridLayout split up you frame to 4 vertical blocks with equal heights. First block contains top panel – jp1, second block contains JScrollPane with JTable and two bottom blocks are empty, but take a half of frame height.

    You can try to use BoxLayout, BorderLayout or GridBagLayout.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a simple java gui calculator, with 3 number systems (there are some
I currently have a working, simple language implemented in Java using ANTLR. What I
I currently have a simple form that when you click the save button will
Currently I have a simple knockoutJS object, with a few observables. But this object
Currently I have a simple maven project that is building a jar file and
I currently have a very simple MySQL database (articlesDB) with 1 table (articles) and
I currently have a Perl CGI script that parses incoming XML requests using XML::Simple
I own a video streaming website and currently I just have a simple hit
Very simple + silly question: Does clojure provide multi maps? I currently have something
I have a simple ticket logging application build on LAMP. I am currently playing

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.