JTable and JScrollPane


H

helmut.teichmann

Hi,

a very small demo to tell you my problem (I use Java 1.6).
I have a JTable with 11 columns in a smaller JScrollPane.
The problem is, that I can't put the column "10" between the columns
"8" and "9" with the mouse. It scrolls to the first column.
What is wrong with the JScrollPane.
It works fine with older versions of Java.

Who can help me?

####################

import java.awt.BorderLayout;
import javax.swing.*;

public class FixedTable
{
public static void main(String args[])
{
final Object rowData[][] = { { "1", "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j" } };
final String columnNames[] = { "#", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10" };
TableModel mainModel = new AbstractTableModel()
{
public final static long serialVersionUID = 20003l;

public int getColumnCount()
{
return columnNames.length - 1;
}

public String getColumnName(int column)
{
return columnNames[column + 1];
}

public int getRowCount()
{
return rowData.length;
}

public Object getValueAt(int row, int column)
{
return rowData[row][column + 1];
}
};
JTable mainTable = new JTable(mainModel);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(mainTable);
JFrame frame = new JFrame("Fixed Table");
frame.setResizable(false);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
}
 
Ad

Advertisements

T

timjowers

Hi,

a very small demo to tell you my problem (I use Java 1.6).
I have a JTable with 11 columns in a smaller JScrollPane.
The problem is, that I can't put the column "10" between the columns
"8" and "9" with the mouse. It scrolls to the first column.
What is wrong with the JScrollPane.
It works fine with older versions of Java.

Who can help me?

####################

import java.awt.BorderLayout;
import javax.swing.*;

public class FixedTable
{
public static void main(String args[])
{
final Object rowData[][] = { { "1", "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j" } };
final String columnNames[] = { "#", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10" };
TableModel mainModel = new AbstractTableModel()
{
public final static long serialVersionUID = 20003l;

public int getColumnCount()
{
return columnNames.length - 1;
}

public String getColumnName(int column)
{
return columnNames[column + 1];
}

public int getRowCount()
{
return rowData.length;
}

public Object getValueAt(int row, int column)
{
return rowData[row][column + 1];
}
};
JTable mainTable = new JTable(mainModel);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(mainTable);
JFrame frame = new JFrame("Fixed Table");
frame.setResizable(false);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}

}

You're right. That's busted in Java6. Did you find the bug yet? Surely
due to size calculation bug as commenting
//frame.setResizable(false);
and resizing larger than columns then it works fine.

TimJowers
 
T

timjowers

Hi,

a very small demo to tell you my problem (I use Java 1.6).
I have a JTable with 11 columns in a smaller JScrollPane.
The problem is, that I can't put the column "10" between the columns
"8" and "9" with the mouse. It scrolls to the first column.
What is wrong with the JScrollPane.
It works fine with older versions of Java.

Who can help me?

####################

import java.awt.BorderLayout;
import javax.swing.*;

public class FixedTable
{
public static void main(String args[])
{
final Object rowData[][] = { { "1", "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j" } };
final String columnNames[] = { "#", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10" };
TableModel mainModel = new AbstractTableModel()
{
public final static long serialVersionUID = 20003l;

public int getColumnCount()
{
return columnNames.length - 1;
}

public String getColumnName(int column)
{
return columnNames[column + 1];
}

public int getRowCount()
{
return rowData.length;
}

public Object getValueAt(int row, int column)
{
return rowData[row][column + 1];
}
};
JTable mainTable = new JTable(mainModel);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(mainTable);
JFrame frame = new JFrame("Fixed Table");
frame.setResizable(false);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}

}

Not fixed in Java6 Update 2.
 
Ad

Advertisements

T

timjowers

Hi,

a very small demo to tell you my problem (I use Java 1.6).
I have a JTable with 11 columns in a smaller JScrollPane.
The problem is, that I can't put the column "10" between the columns
"8" and "9" with the mouse. It scrolls to the first column.
What is wrong with the JScrollPane.
It works fine with older versions of Java.

Who can help me?

####################

import java.awt.BorderLayout;
import javax.swing.*;

public class FixedTable
{
public static void main(String args[])
{
final Object rowData[][] = { { "1", "a", "b", "c", "d", "e", "f",
"g", "h", "i", "j" } };
final String columnNames[] = { "#", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10" };
TableModel mainModel = new AbstractTableModel()
{
public final static long serialVersionUID = 20003l;

public int getColumnCount()
{
return columnNames.length - 1;
}

public String getColumnName(int column)
{
return columnNames[column + 1];
}

public int getRowCount()
{
return rowData.length;
}

public Object getValueAt(int row, int column)
{
return rowData[row][column + 1];
}
};
JTable mainTable = new JTable(mainModel);
mainTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(mainTable);
JFrame frame = new JFrame("Fixed Table");
frame.setResizable(false);
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}

}

Works for me in Java 5 and fails in java 6 and Java 6 Update 2.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top