Sempre trabalhei com Java Web e agora estou em um projeto Swing, estou quase entrando em parafuso!
Fiquei a tarde inteiro tentando fazer esse código funcionar mas não estou sabendo porque o componente não está sendo exibido na tela!
Essa Classe, ao ter um de seus botões clicados, instancia uma noja janela e a adiciona no contexto maior pelo gui mediator! Até aqui tudo perfeito!!!
public class DiagramaDadosIframeEdit extends JInternalFrame implements JUPanel, GridPanelInterface {
//...
private void jButtonSetSeries_mouseClicked(MouseEvent e) {
System.out.println("Cliquei para escolher as séries!!!");
SetSeriesIframeEdit testes = new SetSeriesIframeEdit(guiMediator);
guiMediator.addFormInternalFrame(testes);
}
//...
}
É aqui que ela deveria funcionar mas não funciona!
public class SetSeriesIframeEdit extends JInternalFrame implements JUPanel, GridPanelInterface {
@SuppressWarnings("compatibility:874692784029592547")
private static final long serialVersionUID = 1L;
//PageDefinition File declratation
private JUPanelBinding panelBinding = new JUPanelBinding("hidro2_SetSeriesIframeEditPageDef");
//TODO - popular aqui com os dados necessários
private TabelaSeries tabela = new TabelaSeries();
private GuiMediator guiMediator;
public SetSeriesIframeEdit(GuiMediator guiMediator) {
super();
this.guiMediator = guiMediator;
}
/**
the JbInit method
*/
public void jbInit() throws Exception {
this.addInternalFrameListener(new InternalFrameListener() {
public void internalFrameOpened(InternalFrameEvent e) {
}
public void internalFrameClosing(InternalFrameEvent e) {
}
public void internalFrameClosed(InternalFrameEvent e) {
/* //lista que contém todos os iterators do form de estaçao
//ao se criar um novo iterator, o mesmo deve ser inserido nesta lista
ArrayList<String> listaIterators = new ArrayList<String>();
// listaIterators.add("GeoftDnaeeBaciaViewRo1Iterator");
// listaIterators.add("ViewObjSecaoTransversalMaxId1Iterator");
ArrayList<JUPanelBinding> pBindList = new ArrayList<JUPanelBinding>();
pBindList.add(panelBinding);
for (JUPanelBinding pBind : pBindList) {
ArrayList dcibList = pBind.getIterBindingList();
for (Object dcibObj : dcibList) {
DCIteratorBinding dcib = (DCIteratorBinding)dcibObj;
if (dcib.getViewObject() != null) {
try {
if (listaIterators.contains(dcib.getName())) {
Row r = dcib.getRowSetIterator().getRowSet().getCurrentRow();
if (r != null) {
r.refresh(r.REFRESH_UNDO_CHANGES | r.REFRESH_FORGET_NEW_ROWS);
}
dcib.getDataControl().callCommitTransaction();
}
} catch (NullPointerException exc) {
exc.printStackTrace();
}
}
}
}
panelBinding.release();
Ouvidoria.removerIFrameDaLista((JInternalFrame)Ouvidoria.getIFrameCampanha());
OuvidoriaEstacoes.removerIFrameDaLista((JInternalFrame)OuvidoriaEstacoes.getIFrameEditEstacao()); */
}
public void internalFrameIconified(InternalFrameEvent e) {
}
public void internalFrameDeiconified(InternalFrameEvent e) {
}
public void internalFrameActivated(InternalFrameEvent e) {
}
public void internalFrameDeactivated(InternalFrameEvent e) {
}
});
this.setLayout(null);
this.setNormalBounds(new Rectangle(10, 10, 785, 548));
this.setLocation(50, 20);
this.setSize(780, 560);
this.setPreferredSize(new Dimension(780, 560));
this.setSize(new Dimension(756, 571));
this.setPreferredSize(new Dimension(772, 582));
this.setTitle("Seleção de Series");
//É Exatamente aqui que ela deveria funcionar e não funciona!!!
tabela.setBounds(new Rectangle(10, 10, 735, 530));
this.getContentPane().add(tabela, null);
}
//JUPanel implementation
public JUPanelBinding getPanelBinding() {
return panelBinding;
}
public void setBindingContext(BindingContext bindCtx) {
if (panelBinding.getPanel() == null) {
panelBinding = panelBinding.setup(bindCtx, this);
//registerProjectGlobalVariables(bindCtx);
panelBinding.refreshControl();
try {
jbInit();
panelBinding.refreshControl();
} catch (Exception ex) {
ex.printStackTrace();
//panelBinding.reportException(ex);
}
}
}
public void setBv(int bv) {
}
public JTable getTable() {
return null;
}
//Eventos:
private void jButtonCalcular_mouseClicked(MouseEvent e) {
System.out.println("Cliquei em Calcular!!!");
}
private void jButtonSetEstacoes_mouseClicked(MouseEvent e) {
BancoFinanceiroPanelGrid testes = new BancoFinanceiroPanelGrid();
guiMediator.addFormInternalFrame(testes);
}
private void jButtonSetSeries_mouseClicked(MouseEvent e) {
System.out.println("Cliquei para escolher as séries!!!");
}
//Outros Métodos:
private JInternalFrame getMe() {
return this;
}
}
A Classe que é o componente! (A Tabela!!!)
public class TabelaSeries extends JPanel {
private JTable tabela;
private JTextField textoFiltrar;
private TableRowSorter<SeriesTableModel> classificador;
// TODO - Tipar esses parâmetros
public TabelaSeries() {
new TabelaSeries(new ArrayList<String>(), new ArrayList<String>());
}
public TabelaSeries(List statusConsistencias, List series) {
super();
init(statusConsistencias, series);
}
private void filtra() {
RowFilter<SeriesTableModel, Object> rf = null;
// If current expression doesn't parse, don't update.
try {
rf = RowFilter.regexFilter(textoFiltrar.getText(), 0);
} catch (java.util.regex.PatternSyntaxException e) {
return;
}
classificador.setRowFilter(rf);
}
private void init(List statusConsistencias, List series) {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
// Create a table with a sorter.
SeriesTableModel model = new SeriesTableModel(series, statusConsistencias);
classificador = new TableRowSorter<SeriesTableModel>(model);
tabela = new JTable(model);
tabela.setRowSorter(classificador);
tabela.setPreferredScrollableViewportSize(new Dimension(500, 500));
tabela.setFillsViewportHeight(true);
// Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(tabela);
// Create a separate form for filterText
JPanel formFilter = new JPanel();
JLabel lblFiltro = new JLabel("Filtrar Texto:", SwingConstants.TRAILING);
formFilter.add(lblFiltro);
textoFiltrar = new JTextField();
textoFiltrar.setPreferredSize(new Dimension(300, 20));
// Whenever filterText changes, invoke newFilter.
textoFiltrar.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
filtra();
}
public void insertUpdate(DocumentEvent e) {
filtra();
}
public void removeUpdate(DocumentEvent e) {
filtra();
}
});
lblFiltro.setLabelFor(textoFiltrar);
formFilter.add(textoFiltrar);
add(formFilter);
// Add the scroll pane to this panel.
add(scrollPane);
}
}
E, por fim, o model que utilizo para instanciar a tabela:
public class SeriesTableModel extends AbstractTableModel {
private String[] nomesColunas;
private Object[][] dadosTabelas;
@Override
public int getRowCount() {
if (dadosTabelas != null)
return dadosTabelas.length;
return 0;
}
public SeriesTableModel() {
new SeriesTableModel(new ArrayList<String>(), new ArrayList<String>());
}
// TODO - Tipar a lista
public SeriesTableModel(List series, List statusConsistencias) {
super();
// nomesColunas = new String[statusConsistencias.size()];
List<String> nomes = new ArrayList<String>();
nomes.add("Nome");
// TODO - Tipar statusConsistencias
for (Object o : statusConsistencias) {
// TODO - Adquirir o nome do status
// nomes.add(o.getNome());
nomes.add(null);
}
nomesColunas = (String[])Arrays.copyOf(nomes.toArray(), nomes.toArray().length, String[].class);
int i = 0;
for (Object s : series) {
// TODO - Pegar o nome da série!!!
// dadosTabelas[i][1] = s.getNome();
dadosTabelas[i][1] = "Teste Nome" + i;
int j = 0;
for (Object o : statusConsistencias) {
dadosTabelas[i][j] = new Boolean(false);
j++;
}
i++;
}
}
@Override
public int getColumnCount() {
return nomesColunas.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return dadosTabelas[rowIndex][columnIndex];
}
@SuppressWarnings( { "rawtypes", "unchecked" })
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public String getColumnName(int col) {
return nomesColunas[col];
}
}
Alguém consegue matar essa pra mim?
Muita coisa ai foi gerada pelas ferramentas que tenho que utilizar aqui!
Thx,
PH