Hei. Boa tarde a todos.
Já vi e li inúmeros tópicos sobre isso e ainda não consegui solução.
Estou precisando carregar um JTextArea com dados em um arquivo TXT.
Os dados já estão separados no arquivo de texto por ‘#’, eu preciso carregar o JTextArea com a primeira parte deste texto no arquivo.
Cheguei até aqui:
private void CarregaLista() {
JTextArea jtarea = new JTextArea();
jtarea.setBounds(05,05,170,180);
pnlbase.add(jtarea);
EscolheNivel();
//String titu = titulo;
try {
File Arquivo = new File(nomearq);
FileReader leitor = new FileReader(Arquivo);
Então, tenho uma solução que pode te ajudar muito:
Ao invés de usar o FileReader pra ler o arquivo, você pode usar a própria classe Scanner.
O que você está procurando é uma forma de fazer parser com esse arquivo e pegar apenas o primeiro ou o segundo elemento. Então, dá uma lida nessa clase:
public class TesteLeitura2 {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(new File("arquivo"));
while(scanner.hasNextLine()) {
String linha = scanner.nextLine();
String[] valores = linha.split("#");
System.out.println(valores[1]);
}
scanner.close();
}
}
Isso vai fazer o JAVA ler o arquivo inteiro, separar os elementos pelo caractere “#” e depois armazenar num array chamado valores. Aí, você pega o elemento que precisar.
Pra pegar o primeiro, no seu caso, usaria valores[0] (array é zero-based! não esqueça!)
Lembrando que esse é um código básico a fim de aprendizado e pode ser aprimorado de diversas formas, mas aí é com você
Ou, se você não quiser mudar nada no seu código e continuar usando o seu código, teoricamente (não testei) pra pegar o elemento que você está parseando em
private void carregaLista() { // nome de método começa sempre com letra minúscula
JTextArea jtarea = new JTextArea();
jtarea.setBounds(05, 05, 170, 180);
pnlbase.add(jtarea);
escolheNivel(); // nome de método começa sempre com letra minúscula
try {
StringBuilder texto = new StringBuilder(); // não desperdice memoria concatenando String, utilize StringBuilder
BufferedReader leitor = new BufferedReader(new FileReader(nomearq));
String linha = null;
int numero = 1;
while ((linha = leitor.readLine()) != null) {
String campos[] = linha.split("#");
texto.append(String.format("%03d", numero++)).append(" ").append(campos[0]).append("\n");
}
leitor.close();
jtarea.setText(texto.toString()); // você havia esquecido de fazer o setText no seu JTextArea
} catch (Exception ex) {
System.out.println("Erro: " + ex.toString());
}
}
Obrigado e mais ainda pelas explicações.
Funcionou direitinho. SOU MAIS FELIZ…
Agora vou atrás de uma barra de rolagem vertical pra esse textfield.
Obrigadão mesmo.
Hei Staroski.
sobre a sua sugestão para eu usar o jscroolpane.
Eu vou usar uma pequena janela (05,05,170,180) na lateral do jpainel.
É um quadro que vai mostrar os nomes dos usuários já registrados. Esse tal aí pareceu pra coisa maior. Desculpe minha ignorancia. kk
JScrollPane é para apresentar barras de rolagem.
Leia a documentação das classes e utilize os gerenciadores de layout.
Já recebesse essa dica várias vezes, se não aprender a usar os gerenciadores de layout, suas telas sempre vão ser um sofrimento.
Não se usa somente um, você combina diferentes painéis cada um utilizando o gerenciador que melhor atende o que você quer apresentar em determinado painel.
Isso não é um gerenciador de layout, é uma ferramenta para desenhar telas em JavaFX
Gerenciador de layout (Layout Manager) são classes utilizadas para controlar a forma como um container dispõe seus componentes.
Por exemplo quando você redimensiona uma janela e não está usando layouts, sua aplicação vai parecer uma porcaria.
Um container com FlowLayout organiza os componentes automagicamente um do lado do outro, podendo ser alinhado pela esquerda, centro ou direita.
Um container com BorderLayout permite que os componentes sejam adicionados em até 5 posições distintas:
NORTH: O componente fica fixado na parte superior do container, sua largura é esticada ocupando todo o espaço disponível e a altura é respeitada de acordo com a propriedade preffered height;
SOUTH: O componente fica fixado na parte inferior do container, sua largura é esticada ocupando todo o espaço disponível e a altura é respeitada de acordo com a propriedade preffered height;
EAST: O componente fica fixado na parte direita do container, sua altura é esticada ocupando todo o espaço disponível e a largura é respeitada de acordo com a propriedade preffered width;
WEST: O componente fica fixado na parte esquerda do container, sua altura é esticada ocupando todo o espaço disponível e a largura é respeitada de acordo com a propriedade preffered width;
CENTER: O componente fica fixado no centro do container, sua altura e largura são esticadas ocupando todo o espaço disponível;
Hei staroski.
Antes, estou desenhando (power point) cada etapa do processo de criação para tomar decisão de qual gerenciador aplicar e poder ter mais visão de cada pedacinho.