Pessoal, eu tenho uma classe que extende JFrame e nela eu tenho um painel sendo que eu adiciono váriás tabelas e labels neste painel. Preciso que o JFrame fique com uma certa largura de modo que as colunas da minha tabela não fiquei escondidas, ou seja, de modo que a tabela não precise usar o scrollpane; Eu tentei usar o setSize no JFrame mas não consegui. A parte de qual layout está usando eu peguei da net, pois não conheço a fundo swing e possa ser que tenha algo errado com ele.
Abaixo está minha classe JFrame e tb minha tableModel. Se alguém puder me ajudar eu agradeço.
É só executar e ver como abre a janela de forma que as tabelas ficam com as colunas escondidas e quando aumenta a largura da janela as colunas vão aparecendo até ficarem todas expostas.
package com.sismat.telas;
import com.sismat.classes.visualizacao.AlunoBoletimVisualizacao;
import com.sismat.classes.visualizacao.DisciplinaBoletimVisualizacao;
import com.sismat.table.BoletimTabelModel;
import com.sismat.table.QuadroGeralTableModel;
import java.awt.Dimension;
import java.util.List;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
public class TelaBoletim extends javax.swing.JFrame {
public TelaBoletim() {
JLabel nome = null;
JLabel turma = null;
JPanel panel = new JPanel();
JTable table = null;
JScrollPane jstable = null;
JScrollPane jspane = null;
BoletimTabelModel modelBoletim = null;
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setBorder(new EmptyBorder(40, 60, 40, 60));
for (int i = 0; i < 4; i++) {
nome = new JLabel("Aluno: ");
turma = new JLabel("Turma: ");
panel.add(new JLabel("Escola Municipal Amadeu Bolognesi"));
panel.add(nome);
panel.add(turma);
modelBoletim = new BoletimTabelModel();
table = new JTable();
table.setModel(modelBoletim);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.getColumnModel().getColumn(0).setPreferredWidth(150);
table.getColumnModel().getColumn(1).setPreferredWidth(57);
table.getColumnModel().getColumn(2).setPreferredWidth(90);
table.getColumnModel().getColumn(3).setPreferredWidth(57);
table.getColumnModel().getColumn(4).setPreferredWidth(57);
table.getColumnModel().getColumn(5).setPreferredWidth(90);
table.getColumnModel().getColumn(6).setPreferredWidth(57);
table.getColumnModel().getColumn(7).setPreferredWidth(57);
table.getColumnModel().getColumn(8).setPreferredWidth(90);
table.getColumnModel().getColumn(9).setPreferredWidth(57);
table.getColumnModel().getColumn(10).setPreferredWidth(75);
table.getColumnModel().getColumn(11).setPreferredWidth(90);
jstable = new JScrollPane();
jstable.setViewportView(table);
panel.add(jstable);
panel.add(Box.createRigidArea(new Dimension(0, 100)));
}
jspane = new JScrollPane();
jspane.setViewportView(panel);
this.add(jspane);
this.setSize(2500, 2000);
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Boletins");
setMinimumSize(new java.awt.Dimension(700, 300));
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
pack();
}// </editor-fold>
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TelaBoletim().setVisible(true);
}
});
}
// Variables declaration - do not modify
// End of variables declaration
}
E a tableModel
package com.sismat.table;
import com.sismat.classes.visualizacao.DisciplinaBoletimVisualizacao;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class BoletimTabelModel extends AbstractTableModel{
private static final int COL_NOME = 0;
private static final int COL_MEDIA1 = 1;
private static final int COL_RECUPERACAO1 = 2;
private static final int COL_FALTA1 = 3;
private static final int COL_MEDIA2 = 4;
private static final int COL_RECUPERACAO2 = 5;
private static final int COL_FALTA2 = 6;
private static final int COL_MEDIA3 = 7;
private static final int COL_RECUPERACAO3 = 8;
private static final int COL_FALTA3 = 9;
private static final int COL_MEDIAFINAL = 10;
private static final int COL_TOTALFALTAS = 11;
private List<DisciplinaBoletimVisualizacao> disciplinas;
//Construtor default que apenas cria uma lista vazia de DisciplinaBoletimVisualizacao
public BoletimTabelModel() {
this(new ArrayList<DisciplinaBoletimVisualizacao>());
}
//Esse é um construtor, que recebe a nossa lista de aulas
public BoletimTabelModel(List<DisciplinaBoletimVisualizacao> disciplinas) {
this.disciplinas = new ArrayList<DisciplinaBoletimVisualizacao>(disciplinas);
}
public int getRowCount() {
//Quantas linhas tem sua tabela? Uma para cada item da lista.
return disciplinas.size();
}
public int getColumnCount() {
//Quantas colunas tem a tabela? Nesse exemplo, só 2.
return 12;
}
@Override
public String getColumnName(int column) {
//Qual é o nome das nossas colunas?
if (column == COL_NOME)
return "Disciplina";
else if(column == COL_MEDIA1)
return "Média1";
else if(column == COL_RECUPERACAO1)
return "Recuperação1";
else if(column == COL_FALTA1)
return "Falta1";
else if(column == COL_MEDIA2)
return "Média2";
else if(column == COL_RECUPERACAO2)
return "Recuperação2";
else if(column == COL_FALTA2)
return "Falta2";
else if(column == COL_MEDIA3)
return "Média3";
else if(column == COL_RECUPERACAO3)
return "Recuperação3";
else if(column == COL_FALTA3)
return "Falta3";
else if(column == COL_MEDIAFINAL)
return "Média Final";
else if(column == COL_TOTALFALTAS)
return "Total Faltas";
return ""; //Nunca deve ocorrer
}
public Object getValueAt(int row, int column) {
//Pega a aula da linha row.
DisciplinaBoletimVisualizacao disciplina = disciplinas.get(row);
//Verifica qual valor deve ser retornado
if (column == COL_NOME)
return disciplina.getNome();
else if(column == COL_MEDIA1)
return disciplina.getMedia1();
else if(column == COL_RECUPERACAO1)
return disciplina.getRecuperacao1();
else if(column == COL_FALTA1)
return disciplina.getFaltas1();
else if(column == COL_MEDIA2)
return disciplina.getMedia2();
else if(column == COL_RECUPERACAO2)
return disciplina.getRecuperacao2();
else if(column == COL_FALTA2)
return disciplina.getFaltas2();
else if(column == COL_MEDIA3)
return disciplina.getMedia3();
else if(column == COL_RECUPERACAO3)
return disciplina.getRecuperacao3();
else if(column == COL_FALTA3)
return disciplina.getFaltas3();
else if(column == COL_MEDIAFINAL)
return disciplina.getMediafinal();
else if(column == COL_TOTALFALTAS)
return disciplina.getTotalfaltas();
return ""; //Nunca deve ocorrer
}
@Override
public void setValueAt(Object aValue, int row, int column) {
//Pega a aula da linha row.
DisciplinaBoletimVisualizacao disciplina = disciplinas.get(row);
//Verifica qual valor vai ser alterado
if (column == COL_NOME)
disciplina.setNome(aValue.toString());
else if(column == COL_MEDIA1)
disciplina.setMedia1(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_RECUPERACAO1)
disciplina.setRecuperacao1(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_FALTA1)
disciplina.setFaltas1(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_MEDIA2)
disciplina.setMedia2(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_RECUPERACAO2)
disciplina.setRecuperacao2(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_FALTA2)
disciplina.setFaltas2(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_MEDIA3)
disciplina.setMedia3(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_RECUPERACAO3)
disciplina.setRecuperacao3(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_FALTA3)
disciplina.setFaltas3(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_MEDIAFINAL)
disciplina.setMediafinal(Integer.parseInt((String)(aValue.toString())));
else if(column == COL_TOTALFALTAS)
disciplina.setTotalfaltas(Integer.parseInt((String)(aValue.toString())));
}
@Override
public boolean isCellEditable(int row, int column) {
//Indicamos se a célula da row e da column é editável.Nossa tabela toda é.
return false;
}
public DisciplinaBoletimVisualizacao getObject(int row) {
//Já que esse tableModel é de Disciplina, vamos fazer um get que retorne uma Disciplina inteira.
//Isso elimina a necessidade de chamar o getValueAt() nas telas.
return disciplinas.get(row);
}
}
Agradeço e fico no aguardo de uma ajudinha.
Abraços.