MANAZENDO JTABLE CELUMENTE renderização após a célula edit
em uma jtable, implementar capacidades de renderização e edição de células personalizadas podem aprimorar a experiência do usuário. No entanto, é crucial garantir que a formatação desejada seja preservada mesmo após a edição das operações. Em tais cenários, o valor padrão do renderizador de células pode não ser aplicado após a cometimento da edição. Quando a edição termina, o método EditingStopped () da JTable coleta o novo valor via getCellEditorValue (). O modelo é então notificado com setValuEat () e deve ligar posteriormente no FireTableCellupdated (). Este processo abrangente chama o renderizador, que pode ser estendido para lidar com necessidades especiais de formatação. Isso permite um maior controle sobre a aparência e o comportamento da célula, garantindo formatação consistente mesmo após modificações da célula. O renderizador personalizado (CurrencyRenderer) lida com a formatação da moeda, enquanto o editor personalizado (CurrencyEditor) permite que os usuários editem os valores enquanto mantêm a formatação.
importar java.awt.component; importar java.awt.event.mouseevent; importar java.Text.NumberFormat; importar javax.swing.defaultCellEditor; importar javax.swing.jtable; importar javax.swing.jtextfield; importar javax.swing.table.defaultTableCellRenderer; // Renderizador de células personalizado para formatação de moeda classe pública CurrencyRenderer estende DefaultTableCellRenderer { FORMATRE PRIVADO NumberFormat; Public CurrencyRenderer (NumberFormat Formatter) { this.formatter = formatter; SethorizontalAlignment (Jlabel.right); } @Override public void SetValue (valor do objeto) { setText ((value == null)? "": formatter.format (value)); } } // Editor de células personalizado para entrada de moeda, mantendo a formatação public class CurrencyEditor estende o DefaultCellEditor { FORMATRE PRIVADO NumberFormat; Private JTextfield Textfield; Public CurrencyEditor (NumberFormat Formatter) { Super (New JTextfield ()); this.formatter = formatter; textfield = (jtextfield) getComponent (); TextField.SethorizontalAlignment (JTextfield.right); textfield.setborder (nulo); } @Override Public Object getCellEditorValue () { tentar { retornar novo duplo (textfield.getText ()); } catch (numberFormatexception e) { retornar duplo.valueOf (0); } } @Override componente público gettableCellEditorComponent (tabela jtable, Valor do objeto, Boolean ISSELECT, INT ROW, INT coluna) { textfield.settext ((valor == null) ? "": formatter.format ((duplo) valor)); Retornar Textfield; } } incorporando essas técnicas, os desenvolvedores podem garantir que os recursos personalizados de renderização e edição de células funcionem perfeitamente na JTable, fornecendo uma experiência de manipulação de dados consistente e fácil de usar.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3