Bom dia a todos estou tentando adicionar um JTable no meu Panel mas nao to conseguindo, segue o codigo:
PanelpanelTable=newPanel();panel.setBorder(newTitledBorder("Tabela de Músicas"));panel.add(panelTable,"dock center"); // panelTable não esta ficando extendido no meio do meu Panel.Tabletable=newTable();DefaultTableModelm=newDefaultTableModel(newObject[][]{},newString[]{"w","n"}); // OBSERVAÇAO ESTE DefaultTableModel é SO PRA TESTAR SE IA ADD MEU TABLE, JA TENHO MEU TableModel extendendo de Abstracttable.setModel(m);ScrollPanescroll=newScrollPane();scroll.add(table);panelTable.add(scroll,"dock center");
Quando adiciono um Label nesse Panel ele fica no inicio do Panel até ai normal.
Agora porque quando tenho um Panel com um MigLayout dessa forma meu Label é inserido no MEIO do Panel e não no Inicio:
JPanelpanel=newJPanel();/** Bloco utilizado para adicionar um Panel no JDialog **/{panel.setLayout(newMigLayout("","[grow]","[grow]"));panel.setBorder(newTitledBorder("MP3"));this.add(panel);}
Everton, vc está tentando criar em cima de código, usa o netbeans, criar frames nele é muito fácil, só vc arrastar o pane, e jogar a jtable em cima, vc consegue modelar para até criar a scroolbar com muita facilidade, agora se quiser o código msm, poste ai que eu mando o código!
evertonsilvagomesjav
Nem cara quero criar na “unha” mesmo, to utilizando o MigLayout so que estou tendo esses problemas, e quero saber a diferença entre aqueles parametros do construtor do MigLayout tb. Ja andei lendo a documentaçao dele no QuickStart mas estou com dificuldades.
evertonsilvagomesjav
alguem?
Marky.Vasconcelos
Só uma pergunta, por que voce esta usando AWT invés de Swing?
E outra…já que esta usando awt voce importou o MigLayout correto? Tem uma versao pra awt e outra pra swing.
evertonsilvagomesjav
Mark_Ameba:
Só uma pergunta, por que voce esta usando AWT invés de Swing?
E outra…já que esta usando awt voce importou o MigLayout correto? Tem uma versao pra awt e outra pra swing.
Mark pq AWT? To usando swing uai.
Marky.Vasconcelos
Table, Panel são componentes AWT.
JTable, JPanel são componentes Swing.
evertonsilvagomesjav
Mark_Ameba:
Table, Panel são componentes AWT.
JTable, JPanel são componentes Swing.
Hum nem sabia pq nunca usei AWT mas, Table e Panel são classes minhas herdando de JPanel e JTable.
Marky.Vasconcelos
Ah tah… então não sei qual o erro novamente.
Será que voce não importou errado então? Posta a classe inteira.
evertonsilvagomesjav
Mark_Ameba:
Ah tah… então não sei qual o erro novamente.
Será que voce não importou errado então? Posta a classe inteira.
Assim que chegar em casa eu posto a classe nao estou com ela aqui. Mas Mark quando vc utiliza o MigLayout vc passa algo no Construtor dele para questoes de alinhamento? Pq quando eu passei igual citei desse modo:
new MigLayout("","[fill]",["grow")); Desse modo quando adiciono um component ele nao fica no inicio do meu JPanel ele adiciona no meio do JPanel, mas em compensação desta maneira eu consigo adicionar um JPanel dentro do outro por exemplo, ocupando todo o espaço vertical ou horizontal usando “growy” e “growx”.
Quando faço dessa maneira, sem parametros no construtor:
new MigLayout(); Não consigo fazer com que um JPanel ocupe todo o espaço na vertical ou horizontal usando “growx” ou “growy”, mas quando adiciono um component como um “Label” ele fica no inicio do JPanel e nao no meio como no exemplo de cima.
Essa duvida q esta me corroendo kkk. Sabe me explicar?
Vlw.
E
entanglement
Dica: para ver o que pode estar acontecendo, use:
newMigLayout("debug","[fill]",["grow"));
em vez de
newMigLayout("","[fill]",["grow"));
Quando terminar de corrigir os problemas, tire o “debug”.
Marky.Vasconcelos
Eu normalmente uso o construtor sem parametros.
Por que normalmente cada JPanel é composto de varios JPanels para melhor posicionar os componentes.
evertonsilvagomesjav
entanglement:
Dica: para ver o que pode estar acontecendo, use:
newMigLayout("debug","[fill]",["grow"));
em vez de
newMigLayout("","[fill]",["grow"));
Quando terminar de corrigir os problemas, tire o “debug”.
vou fazer o teste e posto aqui
evertonsilvagomesjav
Mark_Ameba:
Eu normalmente uso o construtor sem parametros.
Por que normalmente cada JPanel é composto de varios JPanels para melhor posicionar os componentes.
Mark eu tambem estava fazendo assim, daí criei um JPanel onde esta adicionado no Frame, tipo isso: this.seContentPane(MeuJPanel), dai dentro desse JPanel queria adicionar outro JPanel esticado verticalmente e nao consegui, foi quando usei os parametros no construtor do Mig ai deu certo
evertonsilvagomesjav
A class inteira
packagecom.br.gui;importjava.awt.Dimension;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjava.util.ArrayList;importjava.util.List;importjavax.swing.DefaultComboBoxModel;importjavax.swing.JDialog;importjavax.swing.JPanel;importjavax.swing.JTable;importjavax.swing.border.TitledBorder;importnet.miginfocom.swing.MigLayout;importcom.br.artistas.Artista;importcom.br.leitura.pasta.musica.LeituraPasta;importcom.br.models.tables.TableModel;importcom.br.utils.ComboBox;importcom.br.utils.Label;importcom.br.utils.ScrollPane;importcom.br.utils.Table;publicclassDialogextendsJDialog{ComboBoxcomboBox;LeituraPastaleitura;String[]artistas={"",""};Dialogdialog;JTabletable;List<Artista>list;StringnomeDaPasta="";TableModelmodelTable;publicDialog(Guigui,Dialogdialog){super(gui);this.dialog=dialog;this.setVisible(true);this.setModal(true);this.initGUI();this.pack();this.setResizable(false);this.setSize(newDimension(1280,768));this.setLocationRelativeTo(null);}publicvoidinitGUI(){if(leitura==null){this.leitura=newLeituraPasta();}JPanelpanel=newJPanel();this.table=newJTable();/** Bloco utilizado para adicionar um Panel no JDialog **/{//panel.setLayout(new MigLayout()); // sem parametros no construtor nao funciona como queria, panel.setLayout(newMigLayout("","[grow]","[grow]"));// aqui funciona do jeito que eu queria. mas se add um Label ele fica no meio.panel.setBorder(newTitledBorder("MP3"));this.setContentPane(panel);}/** Bloco utilizado para adicionar components no Panel **/{Labellabel=newLabel("Músicas/Estilos:");panel.add(label,"split");this.comboBox=newComboBox();this.comboBox.addItemListener(newItemListener(){@OverridepublicvoiditemStateChanged(ItemEventarg0){if(!nomeDaPasta.equalsIgnoreCase(comboBox.getSelectedItem().toString()))nomeDaPasta=comboBox.getSelectedItem().toString();artistas=leitura.leNomeDasMusicas(nomeDaPasta);list=addArtistas(artistas,nomeDaPasta);if(modelTable==null){modelTable=newTableModel(list);table.setModel(modelTable);}else{modelTable.addLista(list);}}});String[]nomePastasMusicais=leitura.lePasta();DefaultComboBoxModelmodel=newDefaultComboBoxModel(nomePastasMusicais);this.comboBox.setModel(model);panel.add(this.comboBox,"w :30: , h :20: ,wrap");JPanelpanelTable=newJPanel();panelTable.setLayout(newMigLayout("","[grow]","[grow]"));panelTable.setBorder(newTitledBorder("Tabela de Músicas"));panel.add(panelTable,"dock center");ScrollPanescroll=newScrollPane();scroll.setViewportView(table);panelTable.add(scroll,"grow");}}publicList<Artista>addArtistas(String[]nomeArtistas,StringnomeDaPasta){StringnomeArtistaMaisMusica;String[]nomesSeparados;StringnomeArtista;Stringgenero=nomeDaPasta;StringnomeDaMusica;List<Artista>list=newArrayList();for(inti=0;i<nomeArtistas.length;i++){nomeArtistaMaisMusica=nomeArtistas[i];nomesSeparados=nomeArtistaMaisMusica.split("-");nomeArtista=nomesSeparados[0];nomeDaMusica=nomesSeparados[1];Artistaartista=newArtista();artista.setNomeArtista(nomeArtista);artista.setGenero(genero);artista.setNomeMusica(nomeDaMusica);list.add(artista);}returnlist;}publicJTablegetTable(){if(this.table==null){table=newJTable();}returnthis.table;}}
Marky.Vasconcelos
Se todos os seus componentes são programados para apenas se extender, se seu JPanel maior não tiver um tamanho eles não vão saber até onde se “esticar”.
Nao sei se é o caso mas troque “grow” por “growx,growy”