So I've been trying to get a JScrollPane
to work on my page but it just wont! I have a table that goes beyond the bounds set and Im trying to set it up so I can scroll down and view everything.
I have tried adding the JScrollPane
to all the containers
and panels
but it wont budge :+| - I dont see why it wont just work if I assign it to mainCon (this.getContentPane())
because if it did work that way It would just make the whole window scrollable!
As you'll see I haven't done any Fancy layouts or anything Im just trying to get the functionality working which it is! But I need to get the JScrollPane working before I can try style all my GUIS!
Here is my code:
public class searchAll extends JFrame implements ActionListener {
private MemTableModel memberTableModel;
private int selectedRow;
//JOptionPane
//Confirm Dialog
private int dialogButton = JOptionPane.YES_NO_OPTION;
//GUI RELATED
private JTable table = new JTable();
//JButtons
private JButton btnDelete = new JButton("Delete");
private JButton btnEdit = new JButton("Edit");
private JButton saveMember = new JButton("Save member");
private JButton btnBack = new JButton("Back");
//Containers, panels
Container mainCon = this.getContentPane();
JPanel formPanel = new JPanel();
//Adding scroll pane here - to formPanel which holds everything.
JScrollPane scrollPane = new JScrollPane(formPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
/*TEXT FIELDS BOXES *******************************/
private JLabel lblName = new JLabel("Name: ");
private JTextField txtName = new JTextField("", 15);
private JLabel lblEmail = new JLabel("Email: ");
private JTextField txtEmail = new JTextField("", 15);
private JLabel lblDescription = new JLabel("Description about you: ");
private JTextArea txtDescription = new JTextArea("", 5, 15);
/*TEXT FIELDS BOXES *******************************/
/*COMBO BOXES *******************************/
private JLabel lblCountry = new JLabel();
private JComboBox comCountry = new JComboBox();
private JLabel lblGenre = new JLabel();
private JComboBox comGenre = new JComboBox();
/*COMBO BOXES *******************************/
/*RADIO BUTTONS *******************************/
private JLabel lblMaleFemale = new JLabel("Gender: ");
private JRadioButton radMale = new JRadioButton("Male: ");
private JRadioButton radFemale = new JRadioButton("Female: ");
private ButtonGroup buttonGroupMF = new ButtonGroup();
private JLabel lblFreePaid = new JLabel("Membership Type: ");
private JRadioButton radFree = new JRadioButton("Free: ");
private JRadioButton radPaid = new JRadioButton("Paid: ");
private ButtonGroup buttonGroupFP = new ButtonGroup();
/*RADIO BUTTONS *******************************/
/*PAID MEMBER STUFF *******************************/
private JLabel lblCardNo = new JLabel("Card Number: ");
private JTextField txtCardNo = new JTextField("", 15);
private JLabel lblExpiry = new JLabel();
private JComboBox comExpiry = new JComboBox();
/*PAID MEMBER STUFF *******************************/
//DB SQL Variables -
private String edName = "";
private String edEmail = "";
private String edDescription = "";
private String edCountry = "";
private String edGenre = "";
private String edGender = "";
private String edMembType = "";
private String edCardNo = "";
private Object edExpiry = "";
private String edSongLim = "";
//DB
private Connection conDB = null;
private Statement stmt = null;
private ResultSet r = null;
//Validation isValid
private boolean isValid;
public searchAll(){
super("Search/Edit/Delete");
this.setBounds(400, 500, 854,400);
// this.setPreferredSize(new Dimension(500,500));
this.setVisible(true);
memberTableModel = new MemTableModel();
//Add table and GUI components
mainCon.add(BorderLayout.NORTH, btnBack);
btnBack.addActionListener(this);
mainCon.add(scrollPane);
mainCon.add(formPanel);
formPanel.setPreferredSize(new Dimension(500,500));
formPanel.add(table);
formPanel.add(btnDelete);
formPanel.add(btnEdit);
//Tried doing this - But didn't work. Just stayed static
// formPanel.add(scrollPane);
//Add action listeners
btnEdit.addActionListener(this);
btnDelete.addActionListener(this);
table.setModel(memberTableModel);
//Set Selection model for table
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e){
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
selectedRow = lsm.getMinSelectionIndex();
System.out.println(selectedRow);
}
});
}
//Connection Method
public Connection getConnection(){
Connection conDB = null;
/****** DEFAULT MYSQL DRIVERS **************************/
String url = connection.geturl();
String username = connection.getUsername();
String password = connection.getPassword();
try{
//load the MYSQL driver
Class.forName(connection.getDriver());
conDB = DriverManager.getConnection(url, username, password);
}
catch(Exception e){
System.out.println("Error was: " + e);
}
return conDB;
}
/*-------ACTION PERFORMED ------------------------------*/
int editCounter = 0;
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnBack){
this.dispose();
}
//DELETE BUTTON BELOW
/*########################################################################*/
if(e.getSource() == btnDelete){
System.out.println("Ran btnDelete");
deleteMember();
}
/*########################################################################*/
//EDIT BUTTON BELOW
/*########################################################################*/
if(e.getSource() == btnEdit){
if(editCounter == 0)
{
System.out.println("Ran btnEdit");
editFunction();
editCounter++;
}
else{
formPanel.repaint();
System.out.println("Stop duplicating form inputs");
}
}
/*########################################################################*/
//SAVE MEMBER BUTTON BELOW
/*########################################################################*/
if(e.getSource() == saveMember){
System.out.println("Ran btnSaveMember");
//UPDATE VALUES
if(radMale.isSelected()){
edGender = "Male";
}
else if(radFemale.isSelected()){
edGender = "Female";
}
if(radPaid.isSelected()){
edMembType = "Paid";
edSongLim = "100";
edCardNo = txtCardNo.getText();
edExpiry = comExpiry.getSelectedItem();
txtCardNo.setEnabled(true);
}
else{
edMembType = "Free";
edSongLim = "10";
edCardNo = "";
edExpiry = "";
txtCardNo.setEnabled(false);
}
//Validate the form
if(txtName.getText().equals(""))
{
isValid = false;
JOptionPane.showMessageDialog(null, "Enter a name please");
}
else{
isValid = true;
if(txtEmail.getText().equals("")){
isValid = false;
JOptionPane.showMessageDialog(null, "Enter an Email please");
}
else
{
isValid = true;
if(txtDescription.getText().equals("")){
isValid = false;
JOptionPane.showMessageDialog(null, "Enter a Description please");
}
else
{
isValid = true;
if(radPaid.isSelected()){
if(txtCardNo.getText().equals("")){
isValid = false;
JOptionPane.showMessageDialog(null, "Enter a Card Number please");
}
else{
isValid = true;
}
}
}
}
}
//If the form is good, execute the update
if(isValid){
saveMember();
}
}//End of saveMember Button
}//End of action performed
/*########################################################################*/
//DELETE MEMBER BELOW
/*#######################DELETE MEMBER####################################*/
public void deleteMember(){
member m = memberTableModel.getRow(selectedRow);
System.out.println("in BTN delete");
try{
//Connection + Statement
conDB = getConnection();
stmt = conDB.createStatement();
String sqlDeleteMem = "delete from members where membId = " + m.getmembId();
//Confirm Dialog - If they click yes dialogResult will = 0
int dialogResult =
JOptionPane.showConfirmDialog(this, "Are you sure you want to delete " + m.getname()
, "Delete Confirmation", dialogButton);
String sqlDeletePlay = "delete from playlist where membId = " + m.getmembId();
if(dialogResult == 0){
stmt.executeUpdate(sqlDeleteMem);
//Delete the playlists associated with the member.
stmt.executeUpdate(sqlDeletePlay);
System.out.println(m.getname() + " Deleted");
}
else{
JOptionPane.showMessageDialog(null, m.getname() + " was not deleted");
}
//Close the DB connection
// stmt.close();
// conDB.close();
}
catch(SQLException er){
System.out.println("Error was: " + er);
}
memberTableModel.LoadTableFromDB();
memberTableModel.fireTableRowsDeleted(selectedRow, selectedRow);
}
/*#########################################################################*/
//SAVE MEMBER BELOW
/*#######################SAVE MEMBER####################################*/
public void saveMember(){
member m = memberTableModel.getRow(selectedRow);
System.out.println("Save member 1");
try{
//CHANGE THE VALUES SO WHEN CLICKS SAVE MEM
/*-------------------------------------*/
//Connection + Statement
conDB = getConnection();
stmt = conDB.createStatement();
//Update Query
String sqlUpdateMem = "UPDATE members SET name = '" + txtName.getText() + "', " +
"email = '" + txtEmail.getText() + "', "
+ "country = '" + comCountry.getSelectedItem() + "', "
+ "favGenre = '" + comGenre.getSelectedItem() + "', "
+ "gender = '" + edGender + "', "
+ "description = '" + txtDescription.getText() + "', "
+ "memberType = '" + edMembType + "', "
+ "songLimit = '" + edSongLim + "', "
+ "card_no = '" + edCardNo + "', "
+ "expiry_date = '" + edExpiry + "' WHERE membId = '"
+ m.getmembId() + "'";
System.out.println(sqlUpdateMem);
System.out.println("Save member 2");
stmt.executeUpdate(sqlUpdateMem);
editCounter = 0;
System.out.println("Updated Member");
//Close the DB connection
conDB.close();
}
catch(SQLException er){
System.out.println("Error was: " + er);
}
}
/*###########################################################################*/
//ADD INPUT FIELDS BELOW
/*#######################INPUT FIELDS####################################*/
public void showInputFields(){
formPanel.setLayout(new FlowLayout());
/*TEXT FIELDS BOXES *******************************/
formPanel.add(lblName);
formPanel.add(txtName);
formPanel.add(lblEmail);
formPanel.add(txtEmail);
formPanel.add(lblDescription);
formPanel.add(txtDescription);
/*TEXT FIELDS BOXES *******************************/
/*COMBO BOXES *******************************/
//Combo Box ( Countrys )
formPanel.add(lblCountry);
formPanel.add(comCountry);
comCountry.addItem("Australia");
comCountry.addItem("New Zealand");
comCountry.addItem("Tasmania");
comCountry.addActionListener(this);
//Combo Box ( Fav Genre )
formPanel.add(lblGenre);
formPanel.add(comGenre);
comGenre.addItem("Pop");
comGenre.addItem("Rock");
comGenre.addItem("Alternative");
comGenre.addItem("Jazz");
comGenre.addItem("Hip/Hop");
comGenre.addActionListener(this);
/*COMBO BOXES *******************************/
/*RADIO BUTTONS BOXES *******************************/
//Radio Buttons (Male/Female)
buttonGroupMF.add(radMale);
buttonGroupMF.add(radFemale);
formPanel.add(radMale);
formPanel.add(radFemale);
radMale.addActionListener(this);
radFemale.addActionListener(this);
//Free or paid members ------
buttonGroupFP.add(radFree);
buttonGroupFP.add(radPaid);
formPanel.add(radFree);
formPanel.add(radPaid);
radFree.addActionListener(this);
radPaid.addActionListener(this);
//Free or paid members ------
/*RADIO BUTTONS BOXES *******************************/
/*PAID MEMBER GUI *******************************/
formPanel.add(lblCardNo);
formPanel.add(txtCardNo);
//Hide
lblCardNo.setVisible(true);
txtCardNo.setVisible(true);
formPanel.add(lblExpiry);
formPanel.add(comExpiry);
comExpiry.addItem("2017");
comExpiry.addItem("2018");
comExpiry.addItem("2019");
//Hide
lblExpiry.setVisible(true);
comExpiry.setVisible(true);
comExpiry.addActionListener(this);
/*PAID MEMBER GUI *******************************/
//Add the button after everything
formPanel.add(saveMember);
saveMember.addActionListener(this);
}
/*###########################################################################*/
//EDIT MEMBER BELOW
/*#######################EDIT MEMBER####################################*/
public void editFunction(){
member m = memberTableModel.getRow(selectedRow);
System.out.println("in BTN edit 1");
//Add boolean value here - Can submit
showInputFields();
try{
System.out.println(" hihi" + m.getmembId());
//Connection + Statement
conDB = getConnection();
stmt = conDB.createStatement();
System.out.println(" hihi" + m.getmembId());
System.out.println("in BTN edit 2");
String sqlEdit = "select * from members where membId = " + m.getmembId();
r = stmt.executeQuery(sqlEdit);
System.out.println("in BTN edit 3");
if(r.next()){
System.out.println("in BTN edit 4");
//Set text for each TextField - Also assign the values to variables
//The variables are used in the SQL UPDATE Query.
//SET THE VALUES FOR THE INPUT FIELDS FROM DB ----------
txtName.setText(r.getString("name"));
txtEmail.setText(r.getString("email"));
txtDescription.setText(r.getString("description"));
comCountry.setSelectedItem(r.getString("country"));
comGenre.setSelectedItem(r.getString("favGenre"));
txtCardNo.setText(r.getString("card_no"));
comExpiry.setSelectedItem(r.getString("expiry_date"));
if(r.getString("memberType").equals("Paid")){
radPaid.setSelected(true);
}
else{
radFree.setSelected(true);
}
if(r.getString("gender").equals("Male")){
radMale.setSelected(true);
// edGender = "Male";
}
else{
radFemale.setSelected(true);
// edGender = "Female";
}
//---------------------------------------------------------
System.out.println("in BTN edit 5");
}
}
catch(SQLException er){
System.out.println("Error was: " + er);
}
memberTableModel.LoadTableFromDB();
System.out.println("in BTN edit 6");
System.out.println("in BTN edit 7");
}
/*##########################################################################*/
}
You should not reaffect
formPanel
in the code (It'll lose its already assigned parent), just addscrollPane
that already contains yourformPanel