Boa tarde, estou efetuando testes com o JFrame dentro de um ScroolPane, mas não estou obtendo sucesso com a movimentação do scrool, minha tabela possui mais linhas do que cabe no JPanel, mas o scrool fica estático sem movimentação, gostaria que funcionasse o scrool do mouse no sobe e desce dos dados ou quando clicasse no subir ou descer do scrool as linhas do JTable fossem atualizando.
package Teste;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
* This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
* Builder, which is free for non-commercial use. If Jigloo is being used
* commercially (ie, by a corporation, company or business for any purpose
* whatever) then you should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details. Use of Jigloo implies
* acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
* PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
* ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewJPanelPesquisas extends javax.swing.JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton btnListar;
private JTable jTable;
private TableModel baseTabela = new DefaultTableModel(new String[][] {
{ "", "" }, { "", "" }}, new String[] {"", ""});
private JScrollPane jScrollPane1;
/**
* Auto-generated main method to display this JPanel inside a new JFrame.
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new NewJPanelPesquisas());
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public NewJPanelPesquisas() {
super();
initGUI();
}
private void initGUI() {
try {
setPreferredSize(new Dimension(400, 300));
this.setLayout(null);
{
btnListar = new JButton();
this.add(btnListar);
btnListar.setText("Listar as Ordens na Metinjo");
btnListar.setBounds(12, 12, 377, 21);
btnListar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnListarActionPerformed(evt);
}
});
}
{
jScrollPane1 = new JScrollPane();
this.add(jScrollPane1);
jScrollPane1.setBounds(12, 44, 376, 228);
jScrollPane1.getVerticalScrollBar().setAutoscrolls(true);
jScrollPane1.setAutoscrolls(true);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.getVerticalScrollBar().setUnitIncrement(10);
{
jTable = new JTable();
jScrollPane1.setViewportView(jTable);
jTable.setModel(baseTabela);
jTable.setBounds(245, 209, 376, 244);
jTable.setBorder(new LineBorder(new java.awt.Color(0, 0, 0), 1,
false));
jTable.setCellSelectionEnabled(true);
jTable.setPreferredSize(new java.awt.Dimension(327, 208));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void btnListarActionPerformed(ActionEvent evt) {
System.out.println("btnListar");
try {
CarregaLista();
} catch (Exception e) {
e.printStackTrace();
}
}
private void CarregaLista() throws Exception {
//jTable.setVisible(true);
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con;
con = DriverManager.getConnection("jdbc:firebirdsql:localhost:C:/CPS/Dados/teste.fdb","SYSDBA","masterkey");
ResultSet rst;
String sql;
Statement st = con.createStatement();
Vector<String[]> aux = new Vector<String[]>();
sql = "Select tos.cod_cliente, tos_aux.n_desenho, tos_aux.n_os_cliente from tpro_pro, tos_aux, tos where tpro_pro.cod_os = tos_aux.cod_os and tpro_pro.cod_os = tos.codigo and tpro_pro.cod_os_aux = tos_aux.codigo and tos.aprovado = 1 and tos.concluido = 0 and tos.cancelado = 0 and tpro_pro.cod_tp_servico = 69 and (tpro_pro.finalizado = 0 or tpro_pro.finalizado is null) and (tpro_pro.hr_estimadas - tpro_pro.hs_realizadas) > 0 order by tpro_pro.cod_tp_servico";
// Retorna um ResultSet
rst = st.executeQuery(sql);
String[] colunas = { "Cliente", "Desenho" };
while (rst.next() && rst.getRow() > 0) {
String[] linha = new String[2];
linha[0] = rst.getString(1);
linha[1] = rst.getString(2);
aux.add(linha);
}
String[][] dados = new String[aux.size()][2];
int i = 0;
for (String[] linha : aux) {
dados[i++] = linha;
}
baseTabela = new DefaultTableModel(dados, colunas);
jTable.setModel(baseTabela);
con.close();
}
}
Desde já obrigado.
Sandro Fernandes Ferreira
Resolvido!
O quem tem que aumentar é jTable não o jScroolPanel.
package Teste;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
* This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
* Builder, which is free for non-commercial use. If Jigloo is being used
* commercially (ie, by a corporation, company or business for any purpose
* whatever) then you should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details. Use of Jigloo implies
* acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
* PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
* ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewJPanelPesquisas extends javax.swing.JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton btnListar;
private JTable jTable;
private TableModel baseTabela = new DefaultTableModel(new String[][] {
{ "", "" }, { "", "" }}, new String[] {"", ""});
private JScrollPane jScrollPane1;
/**
* Auto-generated main method to display this JPanel inside a new JFrame.
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new NewJPanelPesquisas());
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public NewJPanelPesquisas() {
super();
initGUI();
}
private void initGUI() {
try {
setPreferredSize(new Dimension(400, 300));
this.setLayout(null);
{
btnListar = new JButton();
this.add(btnListar);
btnListar.setText("Listar as Ordens na Metinjo");
btnListar.setBounds(12, 12, 377, 21);
btnListar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnListarActionPerformed(evt);
}
});
}
{
jScrollPane1 = new JScrollPane();
this.add(jScrollPane1);
jScrollPane1.setBounds(12, 44, 376, 228);
jScrollPane1.getVerticalScrollBar().setAutoscrolls(true);
jScrollPane1.setAutoscrolls(true);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.getVerticalScrollBar().setUnitIncrement(10);
{
jTable = new JTable();
jScrollPane1.setViewportView(jTable);
jTable.setModel(baseTabela);
jTable.setBounds(245, 209, 376, 244);
jTable.setBorder(new LineBorder(new java.awt.Color(0, 0, 0), 1,
false));
jTable.setCellSelectionEnabled(true);
jTable.setPreferredSize(new java.awt.Dimension(358, 16));
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void btnListarActionPerformed(ActionEvent evt) {
System.out.println("btnListar");
try {
CarregaLista();
} catch (Exception e) {
e.printStackTrace();
}
}
private void CarregaLista() throws Exception {
//jTable.setVisible(true);
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con;
con = DriverManager.getConnection("jdbc:firebirdsql:10.10.1.143:C:/CPS/Dados/teste.fdb","SYSDBA","masterkey");
ResultSet rst;
String sql;
Statement st = con.createStatement();
Vector<String[]> aux = new Vector<String[]>();
sql = "Select tos.cod_cliente, tos_aux.n_desenho, tos_aux.n_os_cliente from tpro_pro, tos_aux, tos where tpro_pro.cod_os = tos_aux.cod_os and tpro_pro.cod_os = tos.codigo and tpro_pro.cod_os_aux = tos_aux.codigo and tos.aprovado = 1 and tos.concluido = 0 and tos.cancelado = 0 and tpro_pro.cod_tp_servico = 69 and (tpro_pro.finalizado = 0 or tpro_pro.finalizado is null) and (tpro_pro.hr_estimadas - tpro_pro.hs_realizadas) > 0 order by tpro_pro.cod_tp_servico";
// Retorna um ResultSet
rst = st.executeQuery(sql);
int tam_linha = 16; // resolvido
String[] colunas = { "Cliente", "Desenho" };
while (rst.next() && rst.getRow() > 0) {
String[] linha = new String[2];
linha[0] = rst.getString(1);
linha[1] = rst.getString(2);
aux.add(linha);
}
String[][] dados = new String[aux.size()][2];
int i = 0;
for (String[] linha : aux) {
dados[i++] = linha;
tam_linha = tam_linha + 16; // resolvido
}
jTable.setPreferredSize(new java.awt.Dimension(358, tam_linha)); // resolvido
baseTabela = new DefaultTableModel(dados, colunas);
jTable.setModel(baseTabela);
con.close();
}
}
[quote=massucato]Boa tarde, estou efetuando testes com o JFrame dentro de um ScroolPane, mas não estou obtendo sucesso com a movimentação do scrool, minha tabela possui mais linhas do que cabe no JPanel, mas o scrool fica estático sem movimentação, gostaria que funcionasse o scrool do mouse no sobe e desce dos dados ou quando clicasse no subir ou descer do scrool as linhas do JTable fossem atualizando.
package Teste;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
* This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
* Builder, which is free for non-commercial use. If Jigloo is being used
* commercially (ie, by a corporation, company or business for any purpose
* whatever) then you should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details. Use of Jigloo implies
* acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
* PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
* ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewJPanelPesquisas extends javax.swing.JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
private JButton btnListar;
private JTable jTable;
private TableModel baseTabela = new DefaultTableModel(new String[][] {
{ "", "" }, { "", "" }}, new String[] {"", ""});
private JScrollPane jScrollPane1;
/**
* Auto-generated main method to display this JPanel inside a new JFrame.
*/
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new NewJPanelPesquisas());
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public NewJPanelPesquisas() {
super();
initGUI();
}
private void initGUI() {
try {
setPreferredSize(new Dimension(400, 300));
this.setLayout(null);
{
btnListar = new JButton();
this.add(btnListar);
btnListar.setText("Listar as Ordens na Metinjo");
btnListar.setBounds(12, 12, 377, 21);
btnListar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnListarActionPerformed(evt);
}
});
}
{
jScrollPane1 = new JScrollPane();
this.add(jScrollPane1);
jScrollPane1.setBounds(12, 44, 376, 228);
jScrollPane1.getVerticalScrollBar().setAutoscrolls(true);
jScrollPane1.setAutoscrolls(true);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.getVerticalScrollBar().setUnitIncrement(10);
{
jTable = new JTable();
jScrollPane1.setViewportView(jTable);
jTable.setModel(baseTabela);
jTable.setBounds(245, 209, 376, 244);
jTable.setBorder(new LineBorder(new java.awt.Color(0, 0, 0), 1,
false));
jTable.setCellSelectionEnabled(true);
jTable.setPreferredSize(new java.awt.Dimension(327, 208));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void btnListarActionPerformed(ActionEvent evt) {
System.out.println("btnListar");
try {
CarregaLista();
} catch (Exception e) {
e.printStackTrace();
}
}
private void CarregaLista() throws Exception {
//jTable.setVisible(true);
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con;
con = DriverManager.getConnection("jdbc:firebirdsql:localhost:C:/CPS/Dados/teste.fdb","SYSDBA","masterkey");
ResultSet rst;
String sql;
Statement st = con.createStatement();
Vector<String[]> aux = new Vector<String[]>();
sql = "Select tos.cod_cliente, tos_aux.n_desenho, tos_aux.n_os_cliente from tpro_pro, tos_aux, tos where tpro_pro.cod_os = tos_aux.cod_os and tpro_pro.cod_os = tos.codigo and tpro_pro.cod_os_aux = tos_aux.codigo and tos.aprovado = 1 and tos.concluido = 0 and tos.cancelado = 0 and tpro_pro.cod_tp_servico = 69 and (tpro_pro.finalizado = 0 or tpro_pro.finalizado is null) and (tpro_pro.hr_estimadas - tpro_pro.hs_realizadas) > 0 order by tpro_pro.cod_tp_servico";
// Retorna um ResultSet
rst = st.executeQuery(sql);
String[] colunas = { "Cliente", "Desenho" };
while (rst.next() && rst.getRow() > 0) {
String[] linha = new String[2];
linha[0] = rst.getString(1);
linha[1] = rst.getString(2);
aux.add(linha);
}
String[][] dados = new String[aux.size()][2];
int i = 0;
for (String[] linha : aux) {
dados[i++] = linha;
}
baseTabela = new DefaultTableModel(dados, colunas);
jTable.setModel(baseTabela);
con.close();
}
}
Desde já obrigado.
Sandro Fernandes Ferreira[/quote]