Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Using JViewport with data in 2 classes

Reply
Thread Tools

Using JViewport with data in 2 classes

 
 
Haircuts Are Important
Guest
Posts: n/a
 
      06-04-2013
I've posted this before, but I posted it in a new thread. This is
because the topic has changed to a JViewport question.

In the below project (incomplete code), I have "columnNames" and
"data" defined in 2 classes for 2 separate tables. I go on to define a
JViewport, so that I can scroll vertically in the right table and the
left table will automatically scroll with the right table.

Should I collapse the 2 sets of "columnNames" and "data" into 1 to get
the scrolling that I want.
Thanks,


package test;

public class ATimer {
public sttic void ATimer (){}
public static void startTimer(){
Timer timer;
timer = new Timer ();
timer.schedule (new TheData(),0,5000);
}
}

public class TheData extends TimerTask{//REALLY UNUSED CLASS
public void run(){//Data broken up to send to tables separately
//...
}
}

class Test extends JFrame{
public static FixedModel fixedModel;
public static ModelWithScrollbar mainModel;
public static JTable fixedTable;
public static JTable scrollTable;

public Test (){

ATimer.startTimer(); // Details omitted

this.setVisible(true);
this.setTitle ("An example");

fixedModel = new FixedModel ();
fixedTable = new JTable (fixedModel){
@Override
public void valueChanged(ListSelectionEvent e){
super.valueChanged(e);
checkSelection(true);
}
};

mainModel = new ModelWithScrollbar();

scrollTable = new JTable (mainModel){
@Override
public void valueChanged(ListSelectionEvent e){
super.valueChanged(e);
checkSelection(false);
}
};

Dimension dimension = new Dimension(0,0);
fixedTable.getTableHeader().setPreferredSize(dimen sion);
scrollTable.getTableHeader().setPreferredSize(dime nsion);

fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OF F);
scrollTable.setAutoResizeMode(JTable.AUTO_RESIZE_O FF);

fixedTable.setSelectionMode(ListSelectionModel.SIN GLE_SELECTION);
scrollTable.setSelectionMode(ListSelectionModel.SI NGLE_SELECTION);
scrollTable.setFocusable(false);

JScrollPane jScrollPane1 = new JScrollPane(scrollTable);

JViewport viewport = new JViewport();
viewport.setView(fixedTable);
viewport.setPreferredSize(fixedTable,getPreferredS ize());
jScrollPane1.setRowHeaderView(viewport);

jScrollPane1.setCorner(JScrollPane.UPPER_LEFT_CORN ER,
fixedTable.getTableHea**der());
getContentPane().add(jScrollPane1,BorderLayout.CEN TER);
}

//Indirectly called via Timer t
public static void add_Rows_To_Tables (){

String[] tmp1 = new String [1]; //A, B, C, D, E ,F etc
String[] tmp2 = new String [10]; //

//...
fixedModel.addRow(Arrays.asList(tmp1));
mainModel.addRow(Arrays.asList(tmp2));

fixedTable.getSelectionMode().setSelectionInterval (
fixedTable.getRowCount () - 1,
fixedTable.getRowCount () - 1);

scrollTable.getSelectionMode().setSelectionInterva l(
scrollTable.getRowCount () - 1,
scrollTable.getRowCount () - 1);

fixedTable.scrollRectToVisible(
new Rectangle (
fixedTable.getCellRect(
fixedTable.getRowCount() - 1,
0,
true)));

scrollTable.scrollRectToVisible(
new Rectangle (
scrollTable.getCellRect(
scrollTable.getRowCount() - 1,
0,
true)));
}

private void checkSelection(boolean isFixedTable){
int fixedSelectedIndex = fixedTable.geSelectedRow();
int selectedIndex = scrollTable.getSelectedRow();

if (fixedSelectedIndex != selectedIndex){
if (isFixedTable){

scrollTable.setRowSelectionInterval(fixedSelectedI ndex,fixedSelectedIndex);
} else {


fixedTable.setRowSelectionInterval(selectedIndex,s electedIndex);
}
}
}

public static main (String[] args){
Test frame = new Test ();

frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

frame.setVisible (true);
}
}

public class FixedModel extends AbstractTableModel{
static public List<String> columnNames = new ArrayList();
static public List<List> data = new ArrayList();

{
for (int i = 0;i < 1; i++){
columnNames.add(" ");
}
}

public void addRow(List rowData){
data.add(rowData);
fireTableRowsInserted(data.size() - 1,data.size() - 1);
}

public int getColumnCount() {
return columnNames.size();
}

public int getRowCount() {
return data.size();
}

@Override
public String getColumnName(int col) {
try {
return columnNames.get(col);
} catch (Exception exception) {
return null;
}
}

public Object getValueAt(int row, int col) {
return data.get(row).get(col);
}

public boolean isCellEditable(int row, int col) {
return false;
}

public Class getColumnClass(int c) {
return getValueAt(0,c).getClass();
}
};

public class ModelWithScrollbar extends AbstractTableModel{
static public List<String> columnNames = new ArrayList();
static public List<List> data = new ArrayList();

{
for (int i = 0;i < 10; i++){
columnNames.add(" ");
}
}

public void addRow(List rowData){
data.add(rowData);
fireTableRowsInserted(data.size() - 1,data.size() - 1);
}

public int getColumnCount() {
return columnNames.size();
}

public int getRowCount() {
return data.size();
}

@Override
public String getColumnName(int col) {
try {
return columnNames.get(col);
} catch (Exception exception) {
return null;
}
}

public Object getValueAt(int row, int col) {
return data.get(row).get(col);
}

public boolean isCellEditable(int row, int col) {
return false;
}

public Class getColumnClass(int c) {
try {
return getValueAt(0,c).getClass();
}
catch (Exception exception) {// MAY LEAD TO ERROR
return this.getClass();
}
}
};
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
help on Implementing a list of dicts with no data pattern rlelis Python 12 05-10-2013 12:54 PM
Unwanted window spawns when using Tkinter with multiprocessing. alternative00@rocketmail.com Python 14 04-30-2013 12:31 PM
problem with saving data in a text file Debashish Saha Python 0 04-24-2013 05:12 AM
Help with printing a bit pattern with printf and %x matt.jaffe@gmail.com C Programming 9 04-19-2013 12:14 PM
name lookup failure using metaclasses with unittests Ulrich Eckhardt Python 7 04-12-2013 02:58 PM



Advertisments