|
Hey people, Im trying to design an organiser in java using netbeans for a project. Iv made the initial GUI which is a box that loads up and it has my logo on it and below that a lable saying Diary with a view button next to it.
when I click the View button (a jButton with a variable name of 'view2') I would like another box to pop up thats is a form allowing me to input the events: meetings, parties and hair cuts for a specific time and day in a given month. Iv got no idea how to go about starting this though and its really getting me down. Iv tried books and internet guides but no joy ^-^
Ideally I would like to include some sort of basic graphical representation to show which times or days have been booked and which are free, for which I was thinking maybe just rows of text lables or something! I also think it could do with bieng updated when a new event is entered.
the diary events are allowed to be booked in any order, but if a timeslot is already booked the user should be informed to make another choice or to exit the diary.
Iv already posted a thread on this forum about how to enter personal information to the organiser as these two parts are the only bits i am struggling with!
If anyone could give me a guide on how to start doing this, or a helping hand with the code i would be really greatful :)
Thanks guys
|
|
|
Dude, first get an idea of what you want it to look like. You could you use JTables to enter the events. And java can be customised pretty well, it takes time though. Explain what you have in mind, or draw it up in paint and send me the picture, i will recommend some way of doing it.
|
|
|
@mmarab
let me help him a bit. He asking for many projects here.
@sethmtut,
Download HSQL from http://hsqldb.sourceforge.net/
HSQLDB is the leading SQL relational database engine written in Java. It has a JDBC drive included.
When you will extract hsqldb_1_8_0_1.zip file (size approx. 3MB) You will have
bin,build,demo,doc,docsrc,lib,src,testrun,index.html,readme.txt folder and files.
In lib folder you will have hsqldb.jar and servlet.jar file.
Put hsqldb.jar(610 KB) file in your classpath. It is required. That's it.
Extra:
You can connect to your database using runManagerSwing.bat file in "demo" folder
Run that file and enter
URL like this
jdbc:hsqldb:file:E:\\kanad\\study\\Organizer\\database\\organize
To run code given below only put hsqldb.jar file in classpath.
and change path E:\\kanad\\study\\Organizer\\database\\organize
to wherewher you want to store your database.
Note "organize" is database name in E:\\kanad\\study\\Organizer\\database\\organize
Enjoy!!
Kanad
|
|
|
package com.kanad.organize;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import java.io.*;
/*
Use at your own risk No guarantee:).
Database used
//http://hsqldb.sourceforge.net/
*/
public class Organizer extends JFrame implements ActionListener,WindowListener {
private JLabel lblName,lblAddress,lblDOB,lblSchoolYear,lblCar;
private JTextField txtName,txtDOB,txtSchoolYear,txtCar;
private JTextArea txtAddress;
private GridBagLayout gbl;
private GridBagConstraints gbc;
private JPanel mainPanel,centerPanel,eastPanel,westPanel,southPanel,northPanel;
private JScrollPane addressScrollPane;
private JButton cmdSave,cmdDelete,cmdCancel;
private JTable table;
private DefaultTableModel model;
private Vector rows,columns;
private JScrollPane tableScrollPane;
private JTextField txtSearch;
private JButton cmdSearch;
private JPanel searchPanel;
private JButton cmdMode=null;
private JLabel lblMode =null;
private Connection connection=null;
private final int SAVE=0,UPDATE=1;
private int mode = SAVE;
private int selectedId=-1;
public Organizer() {
super("Organizer By Kanad Deshpande");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(this);
setSize(new Dimension(800,600));
placeComponents();
setExtendedState(JFrame.MAXIMIZED_BOTH);
}
public static void main(String[] args) {
Organizer organizer = new Organizer();
organizer.init();
//organizer.finish();
organizer.setVisible(true);
}
private void placeComponents() {
lblName = new JLabel("Name");
lblAddress = new JLabel("Address");
lblDOB = new JLabel("Date Of Birth");
lblSchoolYear = new JLabel("School Year");
lblCar = new JLabel("Car Registration");
txtName = new JTextField(20);
txtDOB = new JTextField(10);
txtSchoolYear = new JTextField(20);
txtCar = new JTextField(20);
txtAddress = new JTextArea(5,15);
cmdSave = new JButton("Save");
cmdDelete = new JButton("Delete") ;
cmdCancel = new JButton("Cancel");
cmdSave.addActionListener(this);
cmdDelete.addActionListener(this);
cmdCancel.addActionListener(this);
cmdMode= new JButton("Change Mode");
lblMode = new JLabel("Mode: SAVE");
cmdMode.addActionListener(this);
addressScrollPane = new JScrollPane(txtAddress);
gbl = new GridBagLayout();
gbc = new GridBagConstraints();
mainPanel = new JPanel();
centerPanel = new JPanel();
eastPanel = new JPanel();
westPanel = new JPanel();
southPanel = new JPanel();
northPanel = new JPanel();
centerPanel.setBorder(BorderFactory.createEtchedBorder());
getContentPane().setLayout(new BorderLayout());
getContentPane().add(northPanel,BorderLayout.NORTH);
getContentPane().add(centerPanel,BorderLayout.CENTER);
getContentPane().add(southPanel,BorderLayout.SOUTH);
getContentPane().add(westPanel,BorderLayout.WEST);
getContentPane().add(eastPanel,BorderLayout.EAST);
southPanel.add(cmdSave);
southPanel.add(cmdDelete);
southPanel.add(cmdCancel);
centerPanel.setLayout(gbl);
gbc.insets = new Insets(2,2,2,2);
gbc.anchor=gbc.WEST;
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblName,gbc);
centerPanel.add(lblName);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(txtName,gbc);
centerPanel.add(txtName);
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblAddress,gbc);
centerPanel.add(lblAddress);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(addressScrollPane,gbc);
centerPanel.add(addressScrollPane);
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblDOB,gbc);
centerPanel.add(lblDOB);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(txtDOB,gbc);
centerPanel.add(txtDOB);
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblSchoolYear,gbc);
centerPanel.add(lblSchoolYear);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(txtSchoolYear,gbc);
centerPanel.add(txtSchoolYear);
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblCar,gbc);
centerPanel.add(lblCar);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(txtCar,gbc);
centerPanel.add(txtCar);
gbc.gridwidth=1;
gbc.anchor=gbc.EAST;
gbl.setConstraints(lblMode,gbc);
centerPanel.add(lblMode);
gbc.gridwidth=gbc.REMAINDER;
gbc.anchor=gbc.WEST;
gbl.setConstraints(cmdMode,gbc);
centerPanel.add(cmdMode,gbc);
centerPanel.setBorder(BorderFactory.createTitledBorder("Organizer By Kanad Deshpande"));
/**/
rows = new Vector();
columns = new Vector();
columns.addElement("Id");
columns.addElement("Name");
columns.addElement("Address");
model = new DefaultTableModel();
model.setDataVector(rows,columns);
table = new JTable(model) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
table.addMouseListener(new MouseListener());
tableScrollPane = new JScrollPane(table);
txtSearch =new JTextField(15);
cmdSearch = new JButton("Search");
searchPanel = new JPanel();
cmdSearch.addActionListener(this);
searchPanel.add(txtSearch);
searchPanel.add(cmdSearch);
eastPanel.setBorder(BorderFactory.createTitledBorder("Search"));
eastPanel.setLayout(new BoxLayout(eastPanel,BoxLayout.Y_AXIS));
eastPanel.add(searchPanel);
eastPanel.add(tableScrollPane);
/**/
}
private void initDatabase() {
try {
Class.forName("org.hsqldb.jdbcDriver");
connection = DriverManager.getConnection("jdbc:hsqldb:file:E:\\kanad\\study\\Organizer\\database\\organize","sa","");
if(!connection.isClosed()) {
System.out.println("Successfully Connected to HSQL Database");
}
} catch (Exception e) {
System.out.println("Error while initializing database");
e.printStackTrace();
}
}
private boolean tableExists() {
boolean exists=false;
Statement stat =null;
ResultSet rsTable=null;
String tableName="";
try {
stat = connection.createStatement();
rsTable= stat.executeQuery("Select * from myTable");
if(rsTable!=null) {
if(rsTable.next()) {
exists=true;
}
}
else {
exists=false;
}
rsTable.close();
stat.close();
} catch (Exception e) {
//e.printStackTrace();
exists=false;
}
return exists;
}
public void init() {
Statement stat=null;
String sql="";
initDatabase();
try {
if(!tableExists()) {
sql="CREATE TABLE myTable(id int,p_name char(100),address char(300),DOB char(20),school_year char(20),car_reg char(20))";
stat = connection.createStatement();
stat.executeUpdate(sql);
stat.close();
}
} catch (Exception e) {
System.out.println("Error while initializing ");
e.printStackTrace();
}
}
public void finish() {
try {
Statement st = connection.createStatement();
st.execute("SHUTDOWN");
connection.close();
} catch (Exception e) {
System.out.println("Error while finishing");
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
Statement stat=null;
String sql="";
String name="",address="",DOB="",schoolYear="",car="";
int id=0;
try {
stat = connection.createStatement();
if(e.getSource() == cmdSave) {
name=txtName.getText().trim();
address= txtAddress.getText().trim();
DOB= txtDOB.getText().trim();
schoolYear= txtSchoolYear.getText().trim();
car= txtCar.getText().trim();
id = getId();
if(mode==SAVE) {
sql="INSERT INTO myTable(id,p_name,address,DOB,school_year,car_reg) values ("+id+",'"+name+"','"+address+"','"+DOB+"','"+schoolYear+"','"+car+"')";
stat.executeUpdate(sql);
stat.close();
} else {
if(table.getSelectedRow()>=0) {
selectedId = Integer.parseInt(table.getValueAt(table.getSelectedRow(),0).toString());
sql = "UPDATE myTable set p_name='"+txtName.getText().trim()+"',address='"+txtAddress.getText().trim()+"',";
sql = sql +"DOB='"+txtDOB.getText().trim()+"',school_year='"+txtSchoolYear.getText().trim()+"',car_reg='"+txtCar.getText().trim()+"' Where ";
sql= sql + "id="+ selectedId;
stat.executeUpdate(sql);
stat.close();
}
}
System.out.println(sql);
}
if(e.getSource() == cmdDelete) {
selectedId = Integer.parseInt(table.getValueAt(table.getSelectedRow(),0).toString());
sql = "DELETE FROM myTable Where id = "+ selectedId;
System.out.println(sql);
stat.executeUpdate(sql);
stat.execute("COMMIT");
connection.commit();
stat.close();
showSearch();
}
if(e.getSource() == cmdSearch) {
showSearch();
}
if(e.getSource() == cmdMode) {
if(mode==SAVE) {
mode=UPDATE;
lblMode.setText("Mode: UPDATE");
} else if(mode==UPDATE) {
mode=SAVE;
lblMode.setText("Mode: SAVE");
}
}
if(e.getSource() == cmdCancel) {
txtName.setText("");
txtAddress.setText("");
txtDOB.setText("");
txtSchoolYear.setText("");
txtCar.setText("");
mode = SAVE;
lblMode.setText("Mode: SAVE");
txtName.requestFocus();
}
} catch (Exception ex) {
}
}
private int getId() {
String sql="";
Statement stat=null;
int id=0;
ResultSet rs=null;
try {
stat = connection.createStatement();
sql="select max(id) from myTable";
rs=stat.executeQuery(sql);
if(rs!=null) {
if(rs.next()) {
id = rs.getInt(1)+1;
}
}
rs.close();
stat.close();
} catch (Exception e) {
e.printStackTrace();
}
return id;
}
private void showSearch() {
Vector temp=null;
Statement stat=null;
ResultSet rSearch=null;
String sqlSearch="";
try {
sqlSearch = "Select * from myTable where p_name like'"+txtSearch.getText()+"%'";
rows.removeAllElements();
table.addNotify();
stat = connection.createStatement();
rSearch = stat.executeQuery(sqlSearch);
while(rSearch.next()) {
temp = new Vector();
temp.addElement(rSearch.getString(1));
temp.addElement(rSearch.getString(2));
temp.addElement(rSearch.getString(3));
rows.addElement(temp);
table.addNotify();
}
rSearch.close();
stat.close();
} catch (Exception e) {
System.out.println("Error while showing search "+e);
}
}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
finish();
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
class MouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
int c=0;
c=e.getClickCount();
if(c==2) {//Double Click
mode=UPDATE;
lblMode.setText("Mode: UPDATE");
setValuesForUpdate();
}
}
}
private void setValuesForUpdate() {
Statement stat=null;
String sql="";
ResultSet rsUpdate=null;
try {
selectedId = Integer.parseInt(table.getValueAt(table.getSelectedRow(),0).toString());
stat = connection.createStatement();
sql="Select * from myTable Where id="+ selectedId;
rsUpdate = stat.executeQuery(sql);
if(rsUpdate.next()) {
txtName.setText(rsUpdate.getString(2));
txtAddress.setText(rsUpdate.getString(3));
txtDOB.setText(rsUpdate.getString(4));
txtSchoolYear.setText(rsUpdate.getString(5));
txtCar.setText(rsUpdate.getString(6));
}
rsUpdate.close();
stat.close();
} catch (Exception e) {
System.out.println("Error while setting values for Update"+e);
}
}
}
|
|
|
|
|
@Kanad
LOL Thats funny stuff man!!!
|
|
|
thanks for this gold dust!!
il try it imediatly :D
|
|
|
Im getting a few compile errors, just to check, do i need to build the GUI and label the variables? or is it standalone?
Thanks
|
|
|
Ok iv got the code sorted, but im getting this error when trying to run it:
init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\Howard\Organizer\build\classes
Note: C:\Documents and Settings\Howard\Organizer\src\organizer\Organizer.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
compile-single:
run-single:
java.lang.NoClassDefFoundError: organizer/Organizer
Exception in thread "main"
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
any ideas??
thanks
|
|
|
The code is such simple that it runs with command
java -classpath %classpath%;.;hsqldb.jar; com.kanad.organize.Organizer
Just copy hsqldb.jar into same folder
1) It will automatically create table no need to explicitly execute sql.
2) Using System.getProperty("user.dir") you can get where user is storing code. So you can create folder
using
String path=System.getProperty("user.dir");
File F = new File(path+"/database");
F.mkdir();
You will have now relative path
path=path+"/database";
let user save wherever he wants. No need to use absolute path like E:\kanad\study etc.
I have "written" code without using drag drop in simple text editor.
The code is such simple that it runs with command
java -classpath %classpath%;.;hsqldb.jar; com.kanad.organize.Organizer
<Added>
C:\Documents and Settings\Howard\Organizer\src\organizer\Organizer.java
Please avoid storing java files where space is given in folder name like
"Documents and Settings". Any way that is not issue, I think memory issue might be there.
|
|
|
@ Kanad,
Really appreciate this, iv got it working a treat. Now just gotta play around with it to get it to say what i need
Thanks :D
|
|
|
|
|
|
|
// |