Eu alterei tambem, mas não comentei, substitui a linha 188
panel.setBorder(label.getBorder()); por
panel.setBorder(border);
no meu caso funcionou bem no windows lookand feel, não testei com o substance
Eu alterei tambem, mas não comentei, substitui a linha 188
panel.setBorder(label.getBorder()); por
panel.setBorder(border);
no meu caso funcionou bem no windows lookand feel, não testei com o substance
Coloquei um novo jar para download com uma pequena atualização.
O amigo Paulo Henrique enviou um path para que seja possivel setar o texto que fica “Today” no CalendarView.
Para usar é simples:
CalendarView view = new CalendarView();
view.setTodayString("Hoje");
E basta adicionar a view no lugar que continuara funcionando.
Já baixando!
Marky, tive pensando numa solução para o CellFormatter e pensei:pq não aproveitar as próprias anotações(Resolvable) do towell?
Pensei em algo do tipo:
@Resolvable(colName = "Time", formatter = BigDecimalFormatter.class colWidth=40 cellFormatter ="00,00;00,000" )
private BigDecimal time;
@Resolvable(colName = "Date", formatter = DateFormatter.class colWidth=30 cellFormatter ="dd/MM/yyyy" )
private Date data;
Aí, o importante seria ter métodos do tipo:
MinhaCélula.getFormattedText//pegar o texto puro como formatado tipo 9,991
minhaCélula.getValue //pega os valores de verdade, tipo 9.991
para o usuário fazer as operações necessárias.
Repare que no campo time eu permiti dois valores para o cellFormatter.Isso pode servir para garantir um mínimo(tipo pelo menos 2 casas decimais, máximo 3).
Verdade, acho que poderia aproveitar sim.
Mas dai no caso, para que serviria o Formatter se existir os parametros para o cellFormatter?
E não sei como eu conseguiria formatar qualquer coisa, por exemplo no seu codigo, como eu iria formatar um BigDecimal nesse padrao sem deixar hard coded?
Deixa uma opção de formatação genérica, e outra só para a célula da JTable.O cellFormatter deve ser uma formatação de E/S, para tirar o peso do programador principalmente quando precisar fazer oiperação entre as células.
Por debaixo dos panos, não tenho dúvidas de que ficará hardcoded para o Towell, mas penso que ficará transparente ao programador,não?
Eu penso mais nos beneficios da coisa, e sempre quando eu preciso de uma operação entre as células da JTable, sai + ou - uma gambiarra.Seria uma boa o vini dar uma opnião sobre o assunto, ele sempre tem uma idéia bacana nesses casos.
Realmente, para o programador ficaria transparente.
Acho que nao vai ter como fugir de deixar algumas coisas direto no codigo.
Mark.
O método abaixo do ObjectTableModel não funciona corretamente:
public void remove(int idx[]) {
for (int i : idx)
remove(i);
}
Dessa maneira tenho sempre que inverter o array para poder dar certo.
Uma sugestão seria:
public void remove(int idx[]) {
for (int i = idx.length - 1; i >= 0; i--)
remove(i);
}
Mark, enviei um pull com essa pequena alteração pra ti lá no git.
Beleza, vou lembrar como pego o pull denovo
Nossa, da para fazer merge automatico pelo site.
Ta lá já, valeu.
[quote=Marky.Vasconcelos]Nossa, da para fazer merge automatico pelo site.
Ta lá já, valeu.[/quote]
Mark, só agora percebi que faltou passar o array no argumento de “remove()”. Já enviei o pull com a correção também.
O método correto ficou assim:
/**
* Removes all the values in the specified rows.
*
* @param idx
* the rows to be removed
*/
public void remove(int idx[]) {
for (int i = idx.length - 1; i >= 0; i--) {
remove(idx[i]);
}
}
Desculpe pela falta de atenção.
Eu já vi e já atualizei.
Boa Noite Marky!
Esta é a primeira vez que irei testar o projeto Towel. Leio muitas coisas boas sobre ele, parabéns!
Gostaria de saber se ele está em algum repositório Maven. Se sim, vc tem a dependência?
Obrigado!
Até +!
Ele está somente no github.
Boa Tarde.
Seu framework está muito bom, Marky! Consegui utilizar bem o ObjectTableModel (foi o atrativo inicial! kkk).
Agora tenho algumas dúvidas:
Agora é obrigatório sempre informar as colunas que quero gerar? Isto deixa um pouco inflexível, pois se eu usar o ObjectTableModel em 5 janelas, e criar um novo atributo na minha classe, terei que informar em todas as 5 janelas a minha nova coluna.
Você têm alguma idéia quanto a primeira pergunta?
Obrigado!
É, a idéia seria sempre descrever as colunas quando for criar o model.
Principalmente por que voce pode quere exibir coisas diferentes em lugares diferentes.
Se voce adicionar uma coluna nova, e quiser exibi-la, voce vai precisar declarar em todos os ObjectTableModels que voce criou para essa classe.
Entendi Marky!
Mas gostaria de deixar a sugestão (se possível…rs): criar um outro construtor:
ObjectTableModel modelo = new ObjectTableModel(MinhaClasse.class); //sem informar as colunas...
E por default ele criaria o modelo com as colunas/nome das colunas = todos os atributos, evitando o problema que eu levantei no post anterior.
Se fosse necessário mapear somente alguns atributos/colunas, ai eu utilizaria o outro construtor:
ObjectTableModel modelo = new ObjectTableModel(MinhaClasse.class, "coluna1,coluna2");
De qualquer forma o Towel é ótimo, está de parabéns!
Até +!
Obrigado, vou levar isso em consideração para futuros releases.
Obrigado pela ideia!