Avatar billede vels Nybegynder
13. september 2006 - 13:21 Der er 11 kommentarer og
2 løsninger

JScrollbar og JTextArea

Hej

Nogle der kan give mig et eksempel på hvordan man "linker" JScrollbar og JTextArea så man fået en scroll til ens textarea?

Eller har textarea selv indbygget en scroll funktion?

Mvh
Jesper Vels
Avatar billede vels Nybegynder
13. september 2006 - 14:09 #1
Skal lige huske og sige jeg bruger import javax.swing.JTextArea;  altså swing hvis det gør nogen forskel
Avatar billede arne_v Ekspert
13. september 2006 - 15:43 #2
jeg bruger tit:

getContentPane().add(new JScrollPane(mytextarea), BorderLayout.CENTER);
Avatar billede vels Nybegynder
13. september 2006 - 19:31 #3
jeg opretter mit textarea med:

public JTextArea textAreaOutPut = new JTextArea();

Får mit indhold ind med denne knappe, her har jeg også smidt den kode du skriver

    private void buttonRunBrowse_actionPerformed(ActionEvent e) {
   
    hest hej = new hest(textIfcModelFile.getText());


          getContentPane().add(new JScrollPane(textAreaOutPut), BorderLayout.CENTER);
       
       
      textAreaOutPut.setText(hej.værdi);
}


MEN, der kommer ikke noget i textarea når jeg tilføjer den linie du skriver??? Nogle bud på hvad der kan være galt?
Avatar billede arne_v Ekspert
13. september 2006 - 20:42 #4
getContentPane().add(new JScrollPane(textAreaOutPut), BorderLayout.CENTER);

skal vel være i constructor/init og ikke i en event !?!?
Avatar billede vels Nybegynder
13. september 2006 - 21:02 #5
min frame ser sådan her ud, hvor vil du smide den henne af?

import java.awt.BorderLayout;

import java.awt.Button;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JScrollBar;
import javax.swing.JTree;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import java.awt.Font;

import java.awt.TextArea;

import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class Frame1 extends JFrame
{
  private JLabel labelIfcFile = new JLabel();
  private JComboBox comboboxBuildingElement = new JComboBox();
  private JLabel labelBuildingElements = new JLabel();
  private JLabel labelRenameElements = new JLabel();
  private JTextField textIfcModelFile = new JTextField();

    private JButton buttonBrowse = new JButton();
  private JButton buttonExit = new JButton();
  private JLabel labelOutPutTitel = new JLabel();
  private JButton buttonRunBrowse = new JButton();
    private TextArea textArea1 = new TextArea();
    private JButton buttonReset = new JButton();
    private JTextArea jTextArea1 = new JTextArea();

    public Frame1()
  {
 

    try
    {
       
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }

  private void jbInit() throws Exception
  {

    this.getContentPane().setLayout(null);
    this.setSize(new Dimension(1097, 458));
    this.setTitle("The Name Attribute of Building Elements");
    labelIfcFile.setText("IFC Model File");
    labelIfcFile.setBounds(new Rectangle(10, 45, 85, 15));
    comboboxBuildingElement.setBounds(new Rectangle(100, 80, 85, 20));
   
    /// Element Combobox
    comboboxBuildingElement.addItem("Wall");
   
    //Scroll fætter
    //JScrollPane scrollPane = new JScrollPane(textAreaOutPut);
    //c.add(new JScrollPane(leverandørDataFelt));
    // this.add(new JScrollPane(textAreaOutPut));
    //JScrollPane scrollpane = new JScrollPane();
    //scrollpane.setViewportView(textAreaOutPut);
   
    //scrollpane.setViewport(textAreaOutPut);
    //scrollpane.setViewportView(textAreaOutPut);
   
   
   
   
   
    labelBuildingElements.setText("Building Elements");
    labelBuildingElements.setBounds(new Rectangle(10, 85, 85, 15));
    labelRenameElements.setText("Rename Elements");
    labelRenameElements.setBounds(new Rectangle(10, 135, 175, 15));
    labelRenameElements.setFont(new Font("Tahoma", 1, 16));
    textIfcModelFile.setBounds(new Rectangle(100, 40, 320, 20));
        buttonBrowse.setText("Browse");
    buttonBrowse.setBounds(new Rectangle(430, 40, 75, 20));
    buttonBrowse.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          buttonBrowse_actionPerformed(e);
        }
      });
    buttonExit.setText("Exit");
    buttonExit.setBounds(new Rectangle(830, 400, 75, 23));
    buttonExit.addActionListener(new ActionListener()
      {
        public void actionPerformed(ActionEvent e)
        {
          buttonExit_actionPerformed(e);
        }
      });
    labelOutPutTitel.setText("Model Output:");
    labelOutPutTitel.setBounds(new Rectangle(555, 25, 120, 15));
    labelOutPutTitel.setFont(new Font("Tahoma", 1, 16));
    buttonRunBrowse.setText("Run browse");
    buttonRunBrowse.setBounds(new Rectangle(430, 65, 95, 20));
        buttonRunBrowse.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        buttonRunBrowse_actionPerformed(e);
                    }
                });
        textArea1.setBounds(new Rectangle(540, 55, 515, 305));
        textArea1.setFont(new Font("DialogInput", 0, 14));
        buttonReset.setText("Reset");
        buttonReset.setBounds(new Rectangle(745, 400, 71, 23));
        buttonReset.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        buttonReset_actionPerformed(e);
                    }
                });
        jTextArea1.setBounds(new Rectangle(10, 230, 505, 110));
        this.getContentPane().add(jTextArea1, null);
        this.getContentPane().add(buttonReset, null);
        this.getContentPane().add(textArea1, null);
        this.getContentPane().add(buttonRunBrowse, null);
    this.getContentPane().add(labelOutPutTitel, null);
    this.getContentPane().add(buttonExit, null);
    this.getContentPane().add(buttonBrowse, null);
        this.getContentPane().add(textIfcModelFile, null);
    this.getContentPane().add(labelRenameElements, null);
    this.getContentPane().add(labelBuildingElements, null);
    this.getContentPane().add(comboboxBuildingElement, null);
    this.getContentPane().add(labelIfcFile, null);
  }

  private void buttonExit_actionPerformed(ActionEvent e)
  {
  System.exit(0);

  }

  private void buttonBrowse_actionPerformed(ActionEvent e)
  {
  JFileChooser fileChooser = new JFileChooser("user.dir");
 
  File file;
  String filePath;
  fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
  fileChooser.setDialogTitle("Choose IFC Model File");
  int valg = fileChooser.showOpenDialog(null);

    if(valg == JFileChooser.APPROVE_OPTION)
    {
        file = fileChooser.getSelectedFile();
        filePath = file.getAbsolutePath();
        textIfcModelFile.setText(filePath);
    }
 
  }

    private void buttonRunBrowse_actionPerformed(ActionEvent e) {
   
    hest hej = new hest(textIfcModelFile.getText());

        textArea1.setText(hej.værdi);
        //getContentPane().add(new JScrollPane(textAreaOutPut), BorderLayout.CENTER);

////////////////////////////////////////
//HER smider jeg min tekst i textarea //
///////////////////////////////////////
      jTextArea1.setText(hej.værdi);
    }

    private void buttonReset_actionPerformed(ActionEvent e) {
   
        textArea1.setText("");
    }
}
Avatar billede arne_v Ekspert
13. september 2006 - 21:11 #6
jbInit
Avatar billede vels Nybegynder
13. september 2006 - 21:16 #7
private void jbInit() throws Exception
  {
getContentPane().add(new JScrollPane(jTextArea1), BorderLayout.CENTER)


har jeg lige prøvet, men det giver igen scroll :-(
Når jeg f.eks. sætter musen i textarea og køre ned af med pilen ja så køre curserenned, uden at opdatere textarea... har det noget at sige?
Avatar billede mikkelbm Nybegynder
13. september 2006 - 22:53 #8
Så vidt jeg kan se, så blander du swing og awt sammen. Du har både et TextArea og et JTextArea.

Kør følgende eksempel:

import javax.swing.*;
import java.awt.*;

public class Frame1 extends JFrame
{
    public Frame1()
    {
        jbInit();
    }
   
    private void jbInit()
    {
        setSize (250, 250);
       
        JTextArea textArea = new JTextArea();
        this.getContentPane().add(new JScrollPane(textArea), BorderLayout.CENTER);
    }
   
    public static void main (String[] args)
    {
        new Frame1().setVisible(true);
    }
}

Som viser en lille tekstboks wrappet ind i en JScrollPane.
Præcis som Arne allerede har lagt op til!
Avatar billede vels Nybegynder
14. september 2006 - 08:42 #9
Hej

har lige testet dit eksempel, det virker, men der fylder hele textarea hele vinduet. I min kode har jeg et stort program område i gui (ved ikke hvad man kalder), hvor text area er i den venstre side af gui, og i højre har jeg nogle input felter og nogle kanpper.

Man kan ikke tilføje en scroll når textarea ikke fylde hele vinduet?
Avatar billede pondo Nybegynder
03. november 2006 - 11:55 #10
Du skal lave en scroll container... og den ligger du det du vil have scroll på ind i ... og tilføjer din scroll til din gui.
Her kan du se hvordan jeg gør:

JTextPane actorPane = new JTextPane();

JScrollPane actScroll = new JScrollPane();
actScroll.setWheelScrollingEnabled(true);
actScroll.setBounds(24, 145, 154, 82);
actScroll.setBackground(specCOL);

actScroll.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

actScroll.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

actScroll.getViewport().add(actorPane);

actorPane.setToolTipText("Skuespillere");
actorPane.setEditable(false);
actorPane.setBackground(specCOL);

add(actScroll);

Håber dette kan bruges...
OBS: husk alle imports !!!
Avatar billede vels Nybegynder
04. april 2010 - 07:55 #11
>> pondo, arne_v, mikkelbm smider i et svar så er der points
Avatar billede arne_v Ekspert
04. april 2010 - 13:35 #12
fra mig
Avatar billede mikkelbm Nybegynder
04. april 2010 - 16:49 #13
..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester