quinta-feira, 15 de janeiro de 2009
Fabrica de sessoes do hibernate
public class HibernateUtil {
private static final AnnotationConfiguration cfg =
new AnnotationConfiguration();
private static Session session;
static {
try {
cfg.configure("hibernate.cfg.xml");
File arquiv = new File(cfg.getProperty("nome.banco"));
cfg.setProperty("hibernate.connection.url","jdbc:firebirdsql:localhost/3050:"+arquiv.getAbsolutePath());
session = cfg.buildSessionFactory().openSession();
} catch (Throwable ex) {
System.out.println(ex.getMessage());
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession(){
if (session == null) {
try {
cfg.configure("hibernate.cfg.xml");
File arquiv = new File(cfg.getProperty("nome.banco"));
cfg.setProperty("hibernate.connection.url","jdbc:firebirdsql:localhost/3050:"+arquiv.getAbsolutePath());
session = cfg.buildSessionFactory().openSession();
}
catch (Exception e) {
System.err.println("Initial SessionFactory creation failed." + e);
throw new ExceptionInInitializerError(e);
}
}
return session;
}
}
Opções da jTable
Vamos começar com a largura das células, pra terminar com os ... no final das strings, pelo menos da maioria, pois caso a string seja grande mesmo, com múltiplas linhas, seria necessário a utilização de html ou implementar um jTextArea. Essa linha simplesmente possibilita a alteração da largura da coluna:
jTable1.getColumnModel().getColumn(n).setPreferredWidth(m);
n = coluna da tabela ‘inicia em 0 ’;
m = largura em px da coluna;
Também podemos configurar a altura das linhas da tabela:
jTable1.setRowHeight(m);
m= altura em px das linhas;
Outra opção importante é a reordenação das colunas, caso você tenha implementado um renderer e no mesmo você utilizou a variável column a reordenação feita pelo usuário se tornaria um problema. Podemos bloquear a reordenação das colunas:
jTable1.getTableHeader().setReorderingAllowed(false);
Também podemos bloquear a alteração da largura das colunas:
jTable1.getTableHeader().setResizingAllowed(false);
quinta-feira, 8 de janeiro de 2009
Utilizando jxTable do swingx
Após instalar os componentes do swingx fiz alguns testes, e fiquei quebrando a cabeça na utilização do jxTaskpane e jxTable.
São componentes visuais muito legais e que já facilitam um pouco a vida do programador.
Criei uma classe modeloTabUsuario que extendia AbstractTableModel, o problema que mais demorei pra resolver foi uma falha de digitação no método que sobrescrevia getColumnName, pois os nomes das colunas da minha jxtable ficava com as letras do alfabeto. Segue a classe de teste criada por mim:
public class modeloTabUsuario extends AbstractTableModel{
private ArrayList datalist = new ArrayList();
private String[] columns = {"
public modeloTabUsuario(Collection l){
datalist.addAll(l);
}
public modeloTabUsuario(){
}
public void addUsuarios(Usuarios usu){
datalist.add(usu);
fireTableDataChanged();
}
public void addListUsuarios(Collection
datalist.addAll(list);
fireTableDataChanged();
}
public Usuarios getUsuario(int rows){
if (getRowCount() >= rows ){
return (Usuarios) datalist.get(rows);
}else return null;
}
@Override
public String getColumnName(int col){
return columns[col];
}
public String[] getColumns(){
return columns;
}
@Override
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public int getRowCount() {
return datalist.size();
}
public int getColumnCount() {
return columns.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Usuarios usu = getUsuario(rowIndex);
switch (columnIndex) {
case 0:
return usu.getNome();
case 1:
return usu.getLogin();
case 2:
int tp = usu.getTipo();
if(tp == 0){
return new String("Restrito");
}
if(tp == 1){
return new String("
}
if(tp == 2){
return new String("Supervisor");
}
if(tp == 3){
return new String("Empresa");
}
default:
return null;
}
}
}
Nos testes ate agora tudo certo com o swingx, acredito que irei utilizar o mesmo nas minhas aplicações futuras.