Technical Support
🟢 Online now
Hello 👋

How can we help you today?
Contact on WhatsApp
B4X Store
jdashboardUI / Tables & Data / JTableview
Tables & Data

JTableview

Tabla visual avanzada: fórmulas, temas, idiomas, filtros, edición y SQLite

Buscar en toda jdashboardUI
Fuente
jdashboardUI.b4xlib · Solo API pública
Idioma de la tienda: es
Capturas reales de JTableview
Imágenes reales del componente en funcionamiento: tabla, selección de celdas, barra de fórmulas y uso dentro de una aplicación B4J.
JTableview
JTableview mostrando una tabla de pedidos con columnas, filas, selección y barra de herramientas
Vista real de JTableview: columnas, filas, scroll, selección de celda y controles superiores del componente.
JTableview integrado en una aplicación B4J con barra de fórmulas y selección de celdas
Ejemplo real dentro de una aplicación: se observa la barra de fórmulas con =sum(D13+E11), selección de celdas y JTableview integrado con otros controles.

Tables & Data · jdashboardUI · B4J / JavaFX

JTableview es una tabla visual avanzada para B4J. No es solamente un visor de filas: combina edición, tipos de columna, fórmulas tipo hoja de cálculo, filtros, búsqueda, navegación por teclado, temas, soporte multilingüe, celdas con controles y utilidades para trabajar con SQLite.

Características destacadas

  • Fórmulas A1 como =A1+B1, =B2*C2 o =SUM(A1:A10).
  • Funciones personalizadas con SetFormulaFunction.
  • Fill handle para copiar valores y fórmulas ajustando referencias relativas.
  • Multilingüe: Auto y códigos como en, es, fr, de, pt, ja, zh y muchos más.
  • 29 temas visuales incluidos en la versión analizada.
  • Filtros acumulativos y búsqueda desde la interfaz.
  • Navegación tipo Excel con Tab, Enter, Home, End, Ctrl+flechas y Delete.
  • Edición de celdas y eventos de cambio.
  • Tipos de columna para texto, números, fechas, hora, porcentaje, moneda e imágenes.
  • Celdas enriquecidas con botones, checkbox, switch, imágenes, iconos y contenido compuesto.
  • Carga de datos desde SQLite y operaciones de actualización/eliminación.
  • Altura fija o automática de filas.

Uso desde el Designer

JTableview es un Custom View. Puedes agregarlo desde el Designer y declararlo:

Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
    Private JTableview1 As JTableview
End Sub

Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("Main")
End Sub

Designer Properties

Propiedad Tipo Predeterminado Descripción
TextColor Color 0xFF595959 Color del texto
EditMode Boolean True Activa la barra de edición / fórmulas
EditThemeIcon Boolean True Permite cambiar el tema desde el control
FilterEnabled Boolean False Activa la interfaz de filtros
Language String Auto Idioma interno del componente
Showmenu Boolean True Menú contextual
CornerRadius Int 7 Radio de esquinas
TableViewTheme String Purple Tema visual
BackgroundColor Color 0xFFFFFFFF Fondo de la barra

DesignerCreateView es público por el contrato de Custom View, pero lo invoca B4J automáticamente.

Initialize

JTableview1.Initialize(Me, "JTableview1")

En la versión analizada no existe un método público AddToParent de JTableview.


Propiedades B4X

Los accesores públicos getX/setX compatibles se usan como propiedades B4X normales:

JTableview1.Language = "es"
JTableview1.FilterEnabled = True
JTableview1.Currency = "$"
JTableview1.ExcelKeyboardNavigation = True
JTableview1.SelectedRow = 2

Log(JTableview1.Language)
Log(JTableview1.SelectedRow)
Log(JTableview1.ColumnsCount)

Propiedades públicas encontradas:

Propiedad Acceso Tipo
TextTVEmpty escritura String
Language lectura / escritura String
CurrentTableColor lectura Int
Corner escritura Int
FilterEnabled lectura / escritura Boolean
BarBackgroundColor escritura Int
TableSingleCellSelection escritura Boolean
Currency lectura / escritura String
ExcelKeyboardNavigation lectura / escritura Boolean
AllColumnTableWidth escritura Float
ColumnsCount lectura Int
SelectedRow lectura / escritura Int
CellTextColor escritura Int
CellFont escritura Font

Métodos como getColumnWidth(Index), getRowHeight(Index) y setColumnWidth(Index, Width) siguen siendo métodos porque requieren parámetros adicionales.


Ejemplo completo: inventario con fórmulas

Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
    Private JTableview1 As JTableview
End Sub

Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("Main")

    Dim Columns As List
    Columns.Initialize
    Columns.AddAll(Array As String("Product", "Price", "Stock", "Total"))
    JTableview1.Setcolumns(Columns)

    JTableview1.Language = "es"
    JTableview1.Currency = "$"
    JTableview1.ThemeBlue

    JTableview1.SetColumnTypeByname("Price", JTableview1.COLUMN_TYPE_CURRENCY)
    JTableview1.SetColumnTypeByname("Stock", JTableview1.COLUMN_TYPE_NUMBERS)
    JTableview1.SetColumnTypeByname("Total", JTableview1.COLUMN_TYPE_CURRENCY)

    JTableview1.add(Array As Object( _
        JTableview1.CreateLabel("Keyboard", "Product"), _
        JTableview1.CreateLabel("29.95", "Price"), _
        JTableview1.CreateLabel("12", "Stock"), _
        JTableview1.CreateLabel("0", "Calculated")))

    JTableview1.add(Array As Object( _
        JTableview1.CreateLabel("Mouse", "Product"), _
        JTableview1.CreateLabel("14.50", "Price"), _
        JTableview1.CreateLabel("25", "Stock"), _
        JTableview1.CreateLabel("0", "Calculated")))

    JTableview1.SetFormula(3, 0, "=B1*C1")
    JTableview1.SetFormula(3, 1, "=B2*C2")
    JTableview1.FormatAllRows
End Sub

Private Sub JTableview1_CellClick(ColIndex As Int, RowIndex As Int)
    Log("Cell: " & ColIndex & ", " & RowIndex)
End Sub

Private Sub JTableview1_CellTextChanged(cellvalued As String)
    Log("New value: " & cellvalued)
End Sub

La versión actual no expone un método público llamado AddRow. Para insertar datos usa add, addAtll o addAtll2.


Fórmulas

Puedes asignar fórmulas desde código:

JTableview1.SetFormula(2, 0, "=A1+B1")
Dim Formula As String = JTableview1.GetFormula(2, 0)

Funciones incorporadas encontradas en la implementación:

  • SUM / SUMA
  • AVERAGE / PROMEDIO
  • MIN / MINIMO
  • MAX / MAXIMO
  • COUNT / CONTAR
  • ABS
  • IF / SI
  • POWER / POTENCIA
  • SQRT / RAIZ
  • ROUND / REDONDEAR
  • ROUNDUP
  • ROUNDDOWN
  • MOD / RESIDUO

También admite rangos, paréntesis, operadores + - * / y comparaciones.

Función personalizada

Dim Parameters As List
Parameters.Initialize
Parameters.Add("value")

JTableview1.SetFormulaFunction("DOUBLE", Parameters, "value*2")
JTableview1.SetFormula(2, 0, "=DOUBLE(A1)")

Para eliminarla:

JTableview1.RemoveFormulaFunction("DOUBLE")

Las funciones personalizadas se almacenan en la configuración de JTableview.

Fill handle

En EditMode se muestra el manejador de relleno. Al arrastrarlo, los valores literales se copian y las fórmulas ajustan sus referencias relativas.


Multilingüe

JTableview incluye localización interna mediante JLocalizator.

JTableview1.Language = "Auto"

Auto sigue el idioma del sistema. También puedes forzar un idioma:

JTableview1.Language = "es"
JTableview1.Language = "en"
JTableview1.Language = "fr"

Idiomas declarados en Designer: ar, bn, cs, de, en, es, fa, fr, he, hi, it, ja, ko, my, nl, pa, pl, pt, ro, ru, sr, th, tr, uk, vi, zh.


Temas

JTableview incluye una amplia colección de temas. Puedes seleccionar uno desde Designer o aplicarlo por código:

JTableview1.ThemePurple
JTableview1.ThemeBlue
JTableview1.ThemeGreen
JTableview1.ThemeWhite
JTableview1.ThemeOffice ' No existe: no usar

Temas públicos reales:

ThemePurple, ThemeGreen, ThemeBlue, ThemeBrown, ThemeSkyBlue, ThemeYellow, ThemeRed, ThemeBlack, ThemeOrange, ThemePurple2, ThemeSkyBlue2, ThemeBlue2, ThemeGreen2, ThemeBrown2, ThemeYellow2, ThemeRose, ThemeSkyRed, ThemeRed2, ThemeBlack2, ThemeOrange2, ThemePurple3, ThemeWhite, ThemeWhiteOutline, ThemeLightGray, ThemeLightBlue, ThemeLightPink, ThemeLightGreen, ThemeLightPurple, ThemeTransparent.

ThemeOffice se muestra arriba únicamente como ejemplo de un nombre que no existe y no debe usarse.

Al cambiar de tema se dispara TableColorChanged.


Columnas y tipos

Constantes públicas:

Constante Valor
COLUMN_TYPE_TEXT 1
COLUMN_TYPE_NUMBERS 2
COLUMN_TYPE_DATE 3
COLUMN_TYPE_TIME 4
COLUMN_TYPE_LONGDATE 5
COLUMN_TYPE_PERCENTAGE 6
COLUMN_TYPE_CURRENCY 7
COLUMN_TYPE_IMAGE 8
JTableview1.SetColumnTypeByname("Price", JTableview1.COLUMN_TYPE_CURRENCY)
JTableview1.SetColumnTypeByIndex(1, JTableview1.COLUMN_TYPE_NUMBERS)

JTableview1.HideColumn(2)
JTableview1.ShowColumn(2, 120)
JTableview1.setColumnWidth(0, 220)
JTableview1.SetAutoTableWidth

Filtros, búsqueda y ordenamiento

Activa filtros con:

JTableview1.FilterEnabled = True

La implementación permite filtros por columna y filtros acumulados. El evento público es:

Private Sub JTableview1_FilterChanged(ActiveFilters As Int)
    Log("Filters: " & ActiveFilters)
End Sub

La búsqueda forma parte de la interfaz interna del control; no existe un método público independiente Search en JTableview.

El ordenamiento usa el estado sortable de las columnas JavaFX.


JTableview1.ExcelKeyboardNavigation = True

Comportamiento implementado:

  • Tab / Shift+Tab: siguiente / anterior columna.
  • Enter / Shift+Enter: siguiente / anterior fila.
  • Home / End: primera / última columna.
  • Ctrl+Home: primera celda.
  • Ctrl+End: última celda.
  • Ctrl+flechas: desplazamiento hacia límites.
  • Delete: limpia el contenido editable y su fórmula.

Celdas con controles

JTableview puede construir contenido visual más avanzado que texto:

  • CreateLabel / CreateLabel2
  • CreateCheckbox
  • CreateButton / CreateButton2
  • CreateCellButton / CreateCellButton2
  • CreateJSwitch
  • CreateJImage, CreateJImage2, CreateJImage3
  • CreateImageAndText
  • CreateTextAndIcon
  • CreateCellContent
  • AddCellContentElement

Dos botones en una celda

Dim CellElements As List
CellElements.Initialize

Dim NormalFont As Font = fx.CreateFont("Arial", 12, False, False)
Dim IconFont As Font = fx.CreateFont("FontAwesome", 12, False, False)

CellElements.Add(JTableview1.CreateCellButton( _
    "edit", "Edit", NormalFont, Chr(0xF044), _
    xui.Color_White, xui.Color_White, IconFont, _
    0xFF258A61, 6, 72dip, "Edit record"))

CellElements.Add(JTableview1.CreateCellButton2( _
    "delete", "Delete", xui.Color_White, NormalFont, Chr(0xF2ED), _
    xui.Color_White, IconFont, 0xFFCC4545, 6, 82dip, "Delete record"))

Dim ActionsCell As B4XView = JTableview1.CreateCellContent(CellElements)

SQLite

Métodos públicos principales:

  • LoadSQLTable
  • LoadSQLTable2
  • LoadSQLTable3
  • UpdateSqlTable
  • DeleteDataFromTableSql
  • DeleteTableSql
  • ListAllTablesDB

Ejemplo:

Private SQL1 As SQL

SQL1.InitializeSQLite(File.DirApp, "shop.db", True)
JTableview1.LoadSQLTable(File.Combine(File.DirApp, "shop.db"), "products", SQL1)

UpdateSqlTable reconstruye la tabla y no es un sistema de migraciones de esquema. No debe asumirse que conservará constraints, índices o relaciones complejas.


Eventos públicos

  • TextCell(Value As Object)
  • SelectedRowChanged(Index As Int, row() As Object)
  • TableColorChanged(Color As Int)
  • CheckTable(CheckedSender As jCheckbox, Checked As Boolean)
  • ButtonTableAction(BtSender As jButton)
  • SwichTable(SwichSender As jSwich, Checked As Boolean)
  • KeyPressed(KeyCode As Object, IsControlDown As Object)
  • CellTextChanged(cellvalued As String)
  • CellClick(ColIndex As Int, RowIndex As Int)
  • DeleteRow(RowIndex As Int)
  • CreateRow(RowIndex As Int, row() As Object)
  • TableSqlUpdated(Success As Boolean)
  • SqlDataTableDeleted(Success As Boolean)
  • SqlTableDeleted(Success As Boolean)
  • TableSqlLoad(Success As Boolean)
  • FilterChanged(ActiveFilters As Int)

Observaciones de la versión analizada

La implementación actual tiene algunas inconsistencias internas entre ciertas declaraciones de eventos y su llamada efectiva. La documentación irá ajustándose conforme revisemos JTableview en profundidad.


API pública

La referencia muestra solo Subs públicas. Los accesores B4X compatibles se presentan como propiedades y no como llamadas getX/setX.

Estructura y datos

Initialize, SetFixedRowHeight, HideColumn, ShowColumn, DesignerCreateView, add, addAtll, addAtll2, clear, get, items, FormatAllRows, Setcolumns, SetColumnTypeByname, SetColumnTypeByIndex, setColumnWidth, getColumnWidth, getRowHeight, SetAutoTableWidth, RefreshRowHeights, EnableAutoRowHeight.

Fórmulas

GetExcelColumnName, SetFormula, GetFormula, SetFormulaFunction, RemoveFormulaFunction.

Selección

SelectFullRow, SelectAndClear.

Encabezados

SetColumnHeaderAddIcon, SetColumnHeaderAddTextAndIcon, ChangeAllHeadersColor.

Celdas visuales

CreateLabel, CreateLabel2, CreateCheckbox, CreateButton, CreateButton2, CreateCellButton, CreateCellButton2, CreateCellContent, AddCellContentElement, CreateJSwitch, CreateImageAndText, CreateJImage, CreateJImage2, CreateJImage3, CreateTextAndIcon.

SQLite

LoadSQLTable, LoadSQLTable2, LoadSQLTable3, UpdateSqlTable, DeleteTableSql, DeleteDataFromTableSql, ListAllTablesDB.


Relacionados

  • JDataset: data binding y navegación CRUD sobre SQLite.
  • TableViewUtils: helpers estáticos para crear contenido visual destinado a tablas.