diegogm
Setembro 27, 2012, 9:00am
#1
Bom dia galera!!
Estou desenvolvendo algumas interfaces em Swing e quando vou executar para verificar o Layout da tela alguns componentes
somem e só aparecem se maximizo ou minimizo a tela, não sei o que está ocorrendo.
Por exemplo tenho nessa interface 2 JTable, quando vou executar para verificar a tela elas somem e só aparece do jeito que
eu citei acima, as vezes quando executo elas aparecem normal sem eu maximizar ou minimizar, ocorre com outros componentes
também não somente com a JTable.
Alguém sabe o que pode estar acontecendo??
Obrigado a todos
poste seu código e um print do frame
diegogm
Setembro 27, 2012, 10:47am
#3
Esse é o código de uma das interfaces, que são bem parecidas com as outras.
Esse link é da tela quando some os componentes:
Esse link é da tela normal quando estão todos os componentes dentro dela:
[code]package view;
import java.awt.event.KeyEvent;
import javax.management.JMException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class AbTratamentoPares extends JFrame {
private JPanel painel = new JPanel();
private JMenuBar BarraTratamentoPares;
private JMenu MnTratamentoPares;
private JMenu MnVoltar;
private JMenuItem MiProcessarPares;
private JMenuItem MiExibirListaPares;
private JMenuItem MiAdicionarContagem;
private JMenuItem MiExcluirContagem;
private JToolBar barBotao2 = new JToolBar();
private JButton btnProcessarPares = new JButton();
private JButton btnExibirListaPares = new JButton();
private JButton btnAddContagem = new JButton();
private JButton btnExcluirContagem = new JButton();
private JButton btnVoltar = new JButton();
private JLabel lblTratamentoPares = new JLabel();
private DefaultTableModel modelo = new DefaultTableModel();
private DefaultTableModel modelo2 = new DefaultTableModel();
private JTable Tbtabela = new JTable(modelo);
private JTable Tbtabela2 = new JTable(modelo2);
private DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer();
public AbTratamentoPares() {
init();
}
private void init() {
this.setTitle("Tratamento de Pares");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setSize(800, 500);
this.setVisible(true);
this.setJMenuBar(getBarraTratamentoPares());
this.setResizable(false);
setLocationRelativeTo(null);
painel.setLayout(null);
painel.setSize(800, 500);
this.add(painel);
barBotao2.setBounds(0, 0, 240, 45);
barBotao2.setFloatable(false);
btnProcessarPares.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Tratamento_Pares/BT_Processar_Pares.png")));
btnExibirListaPares.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Tratamento_Pares/BT_Exibir_Lista_Pares.png")));
btnAddContagem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Tratamento_Pares/BT_Adicionar_Contagem.png")));
btnExcluirContagem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Tratamento_Pares/BT_Excluir_Contagem.png")));
btnVoltar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/BTS_Tratamento_Pares/BT_VOLTAR.png")));
barBotao2.add(btnProcessarPares);
barBotao2.add(btnExibirListaPares);
barBotao2.add(btnAddContagem);
barBotao2.add(btnExcluirContagem);
barBotao2.add(btnVoltar);
painel.add(barBotao2);
painel.add(lblTratamentoPares);
lblTratamentoPares.setText("Tratamento de Pares");
lblTratamentoPares.setBounds(10, 60, 150, 20);
String valores1;
valores1 = "Cabo Lógico DE|Menor Par|Maior Par";
String valores2;
painel.add(getTables1(valores1));
valores2 = "Cabo Lógico PARA|Menor Par|Maior Par";
painel.add(getTable2(valores2));
painel.add(Tbtabela);
painel.add(Tbtabela2);
}
public JTable getTables1(String values) {
modelo.addColumn("Cabo Lógico DE");
modelo.addColumn("Menor Par");
modelo.addColumn("Maior Par");
/*Divide a string quando estiver com o caracter "|" */
String[] aux = values.split("\\|");
/*Tamanho e localizacao da Tabela*/
Tbtabela.setBounds(10, 90, 370, 200);
/*Adciona linhas a tabela*/
modelo.addRow(aux);
/*Tamanho das celulas*/
Tbtabela.getColumnModel().getColumn(0).setPreferredWidth(150);
Tbtabela.getColumnModel().getColumn(1).setPreferredWidth(50);
Tbtabela.getColumnModel().getColumn(2).setPreferredWidth(50);
/*Centralizar conteúdo da célula*/
cellRender.setHorizontalAlignment(SwingConstants.CENTER);
//cellRender.setFont(cellRender.getFont().deriveFont(Font, BOLD));
Tbtabela.getColumnModel().getColumn(0).setCellRenderer(cellRender);
Tbtabela.getColumnModel().getColumn(1).setCellRenderer(cellRender);
Tbtabela.getColumnModel().getColumn(2).setCellRenderer(cellRender);
return Tbtabela;
}
public JTable getTable2(String value) {
/*Divide a string quando estiver com o caracter "|" */
String[] aux = value.split("\\|");
/*Define o numero de colunas que ira ter na Tabela*/
modelo2.addColumn("Cabo Lógico PARA");
modelo2.addColumn("Menor Par");
modelo2.addColumn("Maior Par");
/*Tamanho e localizacao da Tabela*/
Tbtabela2.setBounds(400, 90, 370, 200);
/*Adiciona linhas a tabela */
modelo2.addRow(aux);
/*Tamanho das celulas*/
Tbtabela2.getColumnModel().getColumn(0).setPreferredWidth(150);
Tbtabela2.getColumnModel().getColumn(1).setPreferredWidth(50);
Tbtabela.getColumnModel().getColumn(2).setPreferredWidth(50);
/*Centralizar conteúdo da célula*/
cellRender.setHorizontalAlignment(SwingConstants.CENTER);
Tbtabela2.getColumnModel().getColumn(0).setCellRenderer(cellRender);
Tbtabela2.getColumnModel().getColumn(1).setCellRenderer(cellRender);
Tbtabela2.getColumnModel().getColumn(2).setCellRenderer(cellRender);
return Tbtabela2;
}
private JMenuBar getBarraTratamentoPares() {
if (BarraTratamentoPares == null) {
BarraTratamentoPares = new JMenuBar();
BarraTratamentoPares.add(getMnTratamentoPares());
BarraTratamentoPares.add(getMnVoltar());
}
return BarraTratamentoPares;
}
private JMenu getMnTratamentoPares() {
if (MnTratamentoPares == null) {
MnTratamentoPares = new JMenu();
MnTratamentoPares.setText("Tratamento de Pares");
MnTratamentoPares.setMnemonic(KeyEvent.VK_T);
MnTratamentoPares.add(getMiProcessarPares());
MnTratamentoPares.add(getMiExibirListaPares());
MnTratamentoPares.addSeparator();
MnTratamentoPares.add(getMiAdicionarContagem());
MnTratamentoPares.add(getMiExcluirContagem());
}
return MnTratamentoPares;
}
private JMenuItem getMiProcessarPares() {
if (MiProcessarPares == null) {
MiProcessarPares = new JMenuItem();
MiProcessarPares.setText("Processar Pares");
}
return MiProcessarPares;
}
private JMenuItem getMiExibirListaPares() {
if (MiExibirListaPares == null) {
MiExibirListaPares = new JMenuItem();
MiExibirListaPares.setText("Exibir Lista de Pares");
}
return MiExibirListaPares;
}
private JMenuItem getMiAdicionarContagem() {
if (MiAdicionarContagem == null) {
MiAdicionarContagem = new JMenuItem();
MiAdicionarContagem.setText("Adicionar Contagem PARA");
}
return MiAdicionarContagem;
}
private JMenuItem getMiExcluirContagem() {
if (MiExcluirContagem == null) {
MiExcluirContagem = new JMenuItem();
MiExcluirContagem.setText("Excluir Contagem PARA");
}
return MiExcluirContagem;
}
private JMenu getMnVoltar() {
if (MnVoltar == null) {
MnVoltar = new JMenu();
MnVoltar.setText("Voltar");
MnVoltar.setMnemonic(KeyEvent.VK_V);
}
return MnVoltar;
}
public static void main(String[] args) {
new AbTratamentoPares();
}
}
[/code]
Aqui rodou normal o seu código exatamente como você postou, mas vi que tem a mesma adição das tabelas duas vezes no seu código (comente as linhas 89 e 90)
diegogm
Setembro 27, 2012, 11:29am
#5
Verdade tinha me esquecido de comentar essas linhas, muito obrigado.
Então aqui continuou aquele problema não sei na verdade o que é que ocorre
com essas interfaces, ai rodou normal sem ocorrer o problema?
rodou normal… (mesmo adicionando duas vezes)
é estranho acontecer isso, em qual S.O você está executando? qual versão do java? Aparece algum erro na console?
Qualquer coisa tenta chamar um repaint() no final do teu init()
diegogm
Setembro 27, 2012, 11:38am
#7
[quote=erico_kl]rodou normal… (mesmo adicionando duas vezes)
é estranho acontecer isso, em qual S.O você está executando? qual versão do java? Aparece algum erro na console?
Qualquer coisa tenta chamar um repaint() no final do teu init()[/quote]
Verdade é muito estranho mesmo, estou rodando ele no Windows 7, versão 6 do Java e não apresenta nenhum erro no console,
estou usando o JDeveloper da Oracle para fazer essas intefaces, minha empresa só usa ele. Conhece essa IDE?
Cara, você está setando this.setVisible(true) antes de criar seus componentes.
Remova a linha 54 e a insira na última linha do seu método init() .
Ex:
[code]private void init() {
…
this.setVisible(true);
}[/code]
Você está adicionando componentes na panel antes de setar as configurações desses componentes:
Ex: painel.add(lblTratamentoPares);
lblTratamentoPares.setText("Tratamento de Pares");
lblTratamentoPares.setBounds(10, 60, 150, 20);
Mova todas as linhas painel.add(); para as últimas linhas do seu método init() .
Ex:
[code]private void init() {
…
painel.add(Tbtabela);
painel.add(Tbtabela2);
painel.add(getTable2(valores2));
painel.add(getTables1(valores1));
painel.add(lblTratamentoPares);
this.add(painel);
this.setVisible(true);
}[/code]
Vlw!