Sounds like you want a TriStateCheckBox.
You should be able to find an implementation on the internet. Then you want a JTable to display the grid. You�ll need to implement an implementation of TableModel - sublassing AbstractTableModel or DefaultTableModel shold be easiest. Your getValue() method needs to return an appropriate TriState object depending on your domain (the simplest would return Boolean which could be null Boolean.FALSE or Boolean.TRUE). You will also need to create a TriStateRenderer and register it with the JTable.
This approach will be able to support drag and drop in the future.
Hope that makes sense. If you�re new to JTables I suggest you work through the JTable trail on the Sun site which is very informative, about an hours work tops I think.
Don.