Como adicionar JScrollBar aos JTextAreas?
qual o procedimento necessario para se criar duas barras de rolagens (uma horizontal e outra vertical) a uma mesma JTextArea?
obrigado
Como adicionar JScrollBar aos JTextAreas?
qual o procedimento necessario para se criar duas barras de rolagens (uma horizontal e outra vertical) a uma mesma JTextArea?
obrigado
Utilize um JScrollPane e adicione sua JTextArea como viewPort do scrollPane.
Para maiores informações veja a documentação de JScrollPane.
[quote=RicardoLuis]Utilize um JScrollPane e adicione sua JTextArea como viewPort do scrollPane.
Para maiores informações veja a documentação de JScrollPane.[/quote]
existem inumeros viewPort na api.
qual deles utilizar?
alguem tem um exemplo mais claro?
JTextArea textArea = new JTextArea();
JScrollPane scrollPanel = new JScrollPane();
scrollPanel.setViewPort(textArea); //Confere o nome do metodo certo.. :wink:
Algo assim…
[quote=Guilherme Keller]
JTextArea textArea = new JTextArea();
JScrollPane scrollPanel = new JScrollPane();
scrollPanel.setViewPort(textArea); //Confere o nome do metodo certo.. :wink:
Algo assim… :D[/quote]
utilizei:
JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setViewportView(log);
pela documentation:
[quote]setViewportView
public void setViewportView(Component view)
Creates a viewport if necessary and then sets its view. Applications that don't provide the view directly to the JScrollPane constructor should use this method to specify the scrollable child that's going to be displayed in the scrollpane. For example:
JScrollPane scrollpane = new JScrollPane();
scrollpane.setViewportView(myBigComponentToScroll);
Applications should not add children directly to the scrollpane.
[/quote]
mas nao funcionou.
nao surgiram as barras de rolagem.
container.add(textArea);
E as barras de rolagem só aparecem quando necessario , elas nao aparcem por default.
Mas eu estou add em meu container, e logo em seguida eu add meu container no JPanel.
obs: simulei uma situçao em que deveriam aparecer as barras. Mas mesmo assim elas nao surgiram.
Se quiser que apareçam todo o tempo é só fazer:
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
logScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Mesmo que o texto seja menor que o tamanho do JText area a barra irá aparecer.
[quote=LuizLG]Se quiser que apareçam todo o tempo é só fazer:
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
logScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Mesmo que o texto seja menor que o tamanho do JText area a barra irá aparecer.[/quote]
Não entendo. Mesmo assim ainda nao aparecem.
ai segue toda a minha classe.
package corretor;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
public class Janela extends JPanel implements ActionListener{
JLabel label1,label2;
JButton openButton, cancelButton, generateButton;
JFileChooser fc;
JTextArea log;
JCheckBox checkBox;
Leitor arquivoLido;
int arquivosGerados;
public Janela(){
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
//Create a file chooser
fc = new JFileChooser();
//create a JCheck Box
checkBox = new JCheckBox("Gerar relatório",null,false);
//Create the open button.
openButton = new JButton("Abrir o Arquivo");
openButton.addActionListener(this);
//Create the generate button
generateButton = new JButton("Gerar o arquivo normalizado");
generateButton.setEnabled(false);
generateButton.addActionListener(this);
//Create tool tips, for the heck of it.
//label1.setToolTipText("Selecione o arquivo a ser usado");
//Create the text areas
log = new JTextArea(7,30);
log.setMargin(new Insets(5,5,5,5));
JScrollPane logScrollPane = new JScrollPane();
logScrollPane.setViewportView(log);
logScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
logScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
// set the text area1 and the log as not editable.
log.setEditable(false);
//ta1.setEditable(false);
//Add the labels,text areas and buttons
//For layout purposes, put the buttons in a separate panel
JPanel buttonPanel1 = new JPanel();
JPanel buttonPanel2 = new JPanel();
JPanel buttonPanel3 = new JPanel();
buttonPanel1.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonPanel2.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonPanel3.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonPanel1.add(openButton);
buttonPanel1.add(generateButton);
buttonPanel2.add(checkBox);
buttonPanel3.add(log);
//buttonPanel3.setLayout(new BoxLayout(buttonPanel3,BoxLayout.X_AXIS));
//Create a file chooser
fc = new JFileChooser();
//Add the button panels
add(buttonPanel1,BorderLayout.PAGE_START);
add(buttonPanel2,BorderLayout.CENTER);
add(buttonPanel3,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
//Handle open button action.
boolean checked = this.checkBox.isSelected();
if (e.getSource() == openButton) {
int returnVal = fc.showOpenDialog(Janela.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
if (file.getName().endsWith(".txt")){
log.append(fc.getSelectedFile().getName()+" aberto com sucesso\n");
//ta1.append(file.getName());
this.arquivoLido = new Leitor(file);
this.generateButton.setEnabled(true);
this.arquivosGerados++;
}
else{
log.append("IMPOSSIVEL ABRIR. Por favor selecione um arquivo txt\n");//This is where a real application would open the file.
}
}
}else if(e.getSource() == generateButton){
if (this.arquivoLido != null){
Manipuladores manipulador = new Manipuladores();
Escritor escritor = new Escritor("midaret"+arquivosGerados+".txt");
manipulador.normalizar(arquivoLido, escritor);
log.append(escritor.fileName+" Gerado com sucesso\n");
}
}
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
// Create and set up the window.
JFrame frame = new JFrame("Normalizador");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create and set up the content pane.
Janela newContentPane = new Janela();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
Splash.getInstance().finish();//faz com que a Splash Screen suma ao iniciar o programa
//frame.setBounds(300,300,700,700);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
//Faz o splash aparecer na tela
Splash.getInstance().openSplash();
for (int i = 0; i < 5000; i++);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Você precisa adicionar o JScrollPane no JPanel.
Ou seja, o JTextArea é adicionado ao JScrollPane, que é adicionado ao JPanel.
[quote=LuizLG]Você precisa adicionar o JScrollPane no JPanel.
Ou seja, o JTextArea é adicionado ao JScrollPane, que é adicionado ao JPanel.[/quote]
muito obrigado.
funcionou.
=]