Ajuda com JOptionPane + JScrollPane

2 respostas
N

Olá galera.

Breve apresentação:
Sou novo no forum e estou buscando aprender linguagem Java para Desktop a principio.
Estou cursando ADS no 2º semestre, porem estou estudando por conta própria através de apostilas e video aulas.
Não quero me prender somente a Java, tenho planos futuramente estudar pelo menos 1 linguagem por ano e conforme eu for aprendendo
outras linguagem eu vou modelando meu trajeto.

Estou a principio evitando usar ferramentas que “facilitem” a parte de programar e estou fazendo todo código manualmente linha por linha,
pelo simples motivo de aprender como funciona.
Meu atual projeto é um programa bem simples de cadastro de cliente/fornecedor/produtos,
programa feito inteiro em JOptionPane com a combinação de um do-while + switchcase.
Até ai meu programa funciona como eu gostaria, ele cadastra, grava no arquivo txt, porem ao ler esse arquivo ele não aparece barra de rolagem.
Pelo o que eu pesquisei aqui no forum e no Google, JOptionPane não possui scrollbar, porem é possível adicionar um JTextArea com scroll dentro do JOptionPane.
Eu tentei fazer isso, porem não funcionou, o botão de rolagem fica apagado como se estivesse desativado.

Segue abaixo código. Pode conter vários erros, expressões desnecessárias ou confusas pois eu sou novo e algumas funções tirei de exemplos vistos na internet. A parte de OO ainda é complicada para mim, mas com a pratica eu aprendo.
Desde ja agradeço a atenção!

package br.com.lixos;

import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;





public class BarraDeRolagem {
	
	public BarraDeRolagem(){
	JFrame frame = new JFrame();
	frame.setTitle("Teste");
	frame.setBounds(300, 0, 700, 800);
	frame.setSize(700, 725);
	
	JPanel panel = new JPanel();
	frame.getContentPane().add(panel);
	
	
	
	JTextArea jArea = new JTextArea();
	jArea.setLineWrap(true);
	jArea.setBounds(100,100,415, 700);
	//jArea.setBounds(10,80,303, 70);
	jArea.setMargin(new Insets(5,5,5,5));
	jArea.setWrapStyleWord(true);
	
	
	
	
	JScrollPane myjspane = new JScrollPane();
	myjspane.setViewportView(jArea);
	
	
	myjspane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
	myjspane.setHorizontalScrollBarPolicy(myjspane.HORIZONTAL_SCROLLBAR_ALWAYS);
	
	String arq = "FDANTAS_FORNECEDOR.txt";
	
	try{
		BufferedReader in = new BufferedReader(new FileReader(arq));
		JOptionPane.showMessageDialog(null, "Arquivo Lido!!","FDANTAS REP LTDA", JOptionPane.INFORMATION_MESSAGE);
		String str,txt = "";
		
		while ((str = in.readLine()) != null){
			txt += "\r\n" + str;
		}
		jArea.setText(txt);
	}catch(Exception e){
		Toolkit.getDefaultToolkit().beep();
	}
	panel.add(jArea);
	panel.add(myjspane);
	frame.setVisible(true);
	}

}

2 Respostas

R

Experimenta apagar a linha 36 e instanciar teu JScrollPane passando o jArea como parâmetro pra ele (na linha 35). Pra JTextArea não é necessário usar esse método setViewportView.

N

Ruttmann:
Experimenta apagar a linha 36 e instanciar teu JScrollPane passando o jArea como parâmetro pra ele (na linha 35). Pra JTextArea não é necessário usar esse método setViewportView.

Obrigado pela atenção Ruttman, infelizmente somente esse processo não deu certo.

Como eu disse pode conter linhas desnecessarias como você citou da linha 36.

Eu fiz alguns testes e encontrei um erro no final do código (linha 56 estava causando conflito)

e eu fiz adição de uma nova linha com o seguinte comando(metodo): .setPreferredSize(new Dimension(430,700))

Caso resolvido.

Criado 13 de agosto de 2015
Ultima resposta 13 de ago. de 2015
Respostas 2
Participantes 2