Reputation: 13
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
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