Jawad
Jawad

Reputation: 13

Adding JTable with custom size

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Games {

    private JFrame mainFrame;
    private JLabel headerLabel;
    private JLabel statusLabel;
    private JPanel controlPanel;

    public Games() {
        prepareGUI();
    }

    public static void main(String[] args) {
        Games games = new Games();
        games.showTextFieldDemo();
    }

    private void prepareGUI() {
        mainFrame = new JFrame("The Game Database");
        mainFrame.setSize(1100, 800);
        mainFrame.setLayout(new GridLayout(6, 1));
        mainFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent windowEvent) {
                System.exit(0);
            }
        });

        controlPanel = new JPanel();
        controlPanel.setLayout(new GridBagLayout());

        mainFrame.add(controlPanel);
        mainFrame.setVisible(true);
    }

    private void showTextFieldDemo() {

        String[] searchBasis = new String[] { "--Select--", "Genre", "Name of the Game", "Release Year" };

        JLabel lblGenre = new JLabel("Genre", JLabel.RIGHT);
        JLabel lblName = new JLabel("Name", JLabel.CENTER);
        JLabel lblReleaseYear = new JLabel("Release Year", JLabel.CENTER);
        JLabel lblSearchBasis = new JLabel("Search Basis", JLabel.CENTER);

        JButton btnSearch = new JButton("Search");
        JComboBox cmbBasis = new JComboBox<>(searchBasis);

        final JTextField txtGenre = new JTextField(12);
        final JTextField txtName = new JTextField(12);
        final JTextField txtReleaseYear = new JTextField(12);
        JTextArea txtContentArea = new JTextArea("hello");

        txtContentArea.setSize(400, 400);

        lblGenre.setEnabled(false);
        txtGenre.setEnabled(false);
        lblName.setEnabled(false);
        txtName.setEnabled(false);
        lblReleaseYear.setEnabled(false);
        txtReleaseYear.setEnabled(false);

        cmbBasis.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Genre")) {
                    lblGenre.setEnabled(true);
                    txtGenre.setEnabled(true);
                    lblName.setEnabled(false);
                    txtName.setEnabled(false);
                    lblReleaseYear.setEnabled(false);
                    txtReleaseYear.setEnabled(false);

                } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Name of the game")) {
                    lblGenre.setEnabled(false);
                    txtGenre.setEnabled(false);
                    lblName.setEnabled(true);
                    txtName.setEnabled(true);
                    lblReleaseYear.setEnabled(false);
                    txtReleaseYear.setEnabled(false);

                } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Release Year")) {
                    lblGenre.setEnabled(false);
                    txtGenre.setEnabled(false);
                    lblName.setEnabled(false);
                    txtName.setEnabled(false);
                    lblReleaseYear.setEnabled(true);
                    txtReleaseYear.setEnabled(true);

                } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("--Select--")) {
                    lblGenre.setEnabled(false);
                    txtGenre.setEnabled(false);
                    lblName.setEnabled(false);
                    txtName.setEnabled(false);
                    lblReleaseYear.setEnabled(false);
                    txtReleaseYear.setEnabled(false);

                }
            }
        });

        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String data = "Genre " + txtGenre.getText();
                data += ", Name: " + new String(txtName.getText());
                statusLabel.setText(data);
            }
        });

        GridBagConstraints constraint = new GridBagConstraints();
        constraint.gridx = 0;
        constraint.gridy = 0;
        constraint.insets = new Insets(3, 5, 3, 5);

        controlPanel.add(lblSearchBasis, constraint);
        constraint.gridx++;

        controlPanel.add(cmbBasis, constraint);

        constraint.gridy++;
        constraint.gridx = 0;
        constraint.insets = new Insets(3, 5, 3, 5);

        controlPanel.add(lblGenre, constraint);
        constraint.gridx++;

        controlPanel.add(txtGenre, constraint);
        constraint.gridx++;

        controlPanel.add(lblName, constraint);
        constraint.gridx++;

        controlPanel.add(txtName, constraint);
        constraint.gridx++;

        controlPanel.add(lblReleaseYear, constraint);
        constraint.gridx++;

        controlPanel.add(txtReleaseYear, constraint);
        constraint.gridx++;

        controlPanel.add(btnSearch, constraint);

        constraint.gridy++;
        constraint.gridy++;
        constraint.gridx = 0;
        constraint.insets = new Insets(3, 5, 3, 5);

        controlPanel.add(txtContentArea, constraint);
        mainFrame.pack();

        mainFrame.setResizable(false);
        mainFrame.setVisible(true);
    }

}

I have the above code, all I need is a custom sized 3 column JTable below these 3 textfields so I can populate my data there. I have tried many ways but didn't get much from that... they all are static in size.. kindly help me out. Thanks.

Upvotes: 0

Views: 49

Answers (1)

camickr
camickr

Reputation: 324098

all I need is a custom sized 3 column JTable

Read the section from the Swing tutorial on Setting and Changing Column Widths for information on this.

Once you have set the column widths you can then use:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

To set the preferred size of the JTable and its scroll pane.

mainFrame.addWindowListener(new WindowAdapter() {

Don't use a WindowListener to close the frame.

Instead you can just set a property of the JFrame when you create the frame:

mainFrame.addWindowListener(new WindowAdapter() {

Upvotes: 1

Related Questions