Tenho um jTextArea que recebe textos do tipo:
12:17- hehe
12:17- asdasd
12:18- M123123
12:19- hghghghgh
E do lado tenho um botão, que eu quero que limpe as linhas de 2 minutos atrás…
Se agora for 12:19 por exemplo, iria limpar as 2 primeiras linhas…
String k = txtDialog.getText(0, 5); //txtDialog é o jTextArea
Com isso, pego o “12:17” da primeira linha…
Como que posso fazer para passar para a próxima linha?
Use um Scanner:
[code]StringBuilder output = new StringBuilder();
Scanner scan = new Scanner(txtDialog.getText());
while (scan.hasNextLine()) {
String linha = scan.nextLine();
String hora = linha.substring(0,5);
if (!EDeDoisMinutosAtras(hora)) {
output.append(linha);
}
}
scan.close();
txtDialog.setText(output.toString());
[/code]
Agora é só implementar o método EDeDoisMinutosAtras.
Beleza…
Ficou assim:
[code] StringBuilder output = new StringBuilder();
Scanner scan = new Scanner(txtDialog.getText());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String hora = (sdf.format(new Date()));
while (scan.hasNextLine()) {
String linha = scan.nextLine();
String horachat = linha.substring(0,5);
if (horachat != hora) { // NA VERDADE TERIA QUE SER hora -2 minutos...
output.append(linha + "\n");
}
}
scan.close();
txtDialog.setText(output.toString());[/code]
Como que faço pra fazer o que eu escrevi ali na linha 11? (Diminuir 2 minutos)
Na verdade, o ideal mesmos seria você criar uma classe para suas mensagens. Nesse classe, colocar um campo de typestamp (que pode ser um Calendar) e outro do texto.
Então, crie um um TreeSet de objetos dessa classe, ordenados pelo timestamp. Aí sim, faça um método que só exibe esse set no JTextArea.
Então, quando você quiser excluir tudo, exclua objetos dessa lista e a redesenhe no JTextArea. E como o tipo do timestamp vai ser um JCalendar ou algum tipo da JODA-Time, fica fácil.
vixi…
Não intendi mt coisa não… rs…
Alguém teria um exemplo desse pronto? Ou pode ajudar eu a fazer o meu?
Vlws…
heheheeh, tem sim. Aquele seria o jeito ideal…
você pode fazer:
public int converterParaMinutos(String hora) {
int minutoChat = Integer.parseInt(horaChat.substring(3,2));
int horaChat = Integer.parseInt(horaChat.substring(0,2));
return horaChat * 60 + minutoChat;
}
public int pegarMinutosAtuais()
{
return coverterParaMinutos(new SimpleDateTimeFormat("HH:mm").format(new Date()));
}
Então:
StringBuilder output = new StringBuilder();
Scanner scan = new Scanner(txtDialog.getText());
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
int hora = pegarMinutosAtuais() - 2;
while (scan.hasNextLine()) {
String linha = scan.nextLine();
int horachat = converterParaMinutos(linha.substring(0,5));
if (horachat != hora) { // NA VERDADE TERIA QUE SER hora -2 minutos...
output.append(linha + "\n");
}
}
scan.close();
Só que dessa forma, você não trata trocas de dias. Por isso o ideal seria mesmo manter um calendar e fazer do outro jeito que comentei.
O hora é do tipo int,e e o horachat do tipo string…
O Primeiro ficou assim:
public int converterParaMinutos(String hora) {
int minutoChat = Integer.parseInt(hora.substring(3,2)); //hora
int horaChat = Integer.parseInt(hora.substring(0,2)); //hora
return horaChat * 60 + minutoChat;
}
Mas aqui ta dando erro:
public int pegarMinutosAtuais()
{
return coverterParaMinutos(new SimpleDateTimeFormat("HH:mm").format(new Date())); //SimpleDateTimeFormat não existe.. Não seria SimpleDateFormat?
}
É sim.
Meus códigos podem ter alguns errinhos. É que não trabalho mais com Java, nem tenho eclipse instalado aqui. Faço tudo de cabeça…
Hehe…
Mesmo assim é foda em java…
Que bom poder saber esse tanto de java e não precisar trabalhar com isso! kkkk
Ficou assim:
public int converterParaMinutos(String hora) {
int minutoChat = Integer.parseInt(hora.substring(3,2)); //hora
int horaChat = Integer.parseInt(hora.substring(0,2)); //hora
return horaChat * 60 + minutoChat;
}
public int pegarMinutosAtuais()
{
return converterParaMinutos(new SimpleDateFormat("HH:mm").format(new Date()));
}
Eu trabalhava, até ano passado… fiquei 6 anos trabalhando com Java. Fazia sistemas para a área testes em telecomunicações.
Beleza. Agora como esses métodos transformam aquela String de horas em minutos, fica fácil fazer as contas.
Uma hora como 2:30 vai virar:
2x60 + 30 = 150 minutos.
Uma hora como 1:32 vai virar 92 minutos… Isso já trata automaticamente as viradas de hora:
1:30 = 90 minutos
2:20 = 150 minutos.
E você ainda pode usar comparadores relativos, como > ou <.
if (horachat < hora) //Se a hora no chat é menor que a hora a dois minutos atrás...
Só tome o cuidado para todas as suas horas usarem o padrão 24 horas.
Mas mesmo assim não funcionou não…
Ele não tá passando daki: int minutoChat = Integer.parseInt(hora.substring(3,2));
Funcionou aki agora…
Era lá que tava errado msmo…
Passei pra: int minutoChat = Integer.parseInt(hora.substring(3,5)); ae foi…
Vlw ae vinigodoy!
Dinovo! 