java-swing 给文本区jtextarea怎么加个滚动条?

//package cn.edu.jnu.www;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;
public class first extends JFrame{
private JLabel jLabel;
private JTextField jTextField;
private JButton jButton,jButton1,jButton2;
private JTextArea jtextarea;
private JScrollPane sp;

public first()
{
super();
this.setSize(700, 500);
this.getContentPane().setLayout(null);
this.add(getJLabel(), null);
this.add(getJTextField(), null);
this.add(getJButtonok(), null);
this.add(getJButtoncancel(),null);
this.add(getJButtonzero(),null);
this.setBackground(Color.red);
this.add(getJTextArea(), null);

this.setTitle("calculator");
}
private JTextArea getJTextArea(){
if(jtextarea==null){
jtextarea=new JTextArea();
jtextarea.setBounds(5, 45, 650, 400);
}
jtextarea.setLineWrap(true);
//sp=new JScrollPane(jtextarea);
//sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
return jtextarea;
}
private JLabel getJLabel() {
if(jLabel == null) {
jLabel = new javax.swing.JLabel();
jLabel.setBounds(10, 10, 150, 30);
jLabel.setText("请输入需要输出的位数:");
}

return jLabel;
}
private JTextField getJTextField() {
if(jTextField == null) {
jTextField = new javax.swing.JTextField();
jTextField.setBounds(150, 10, 160, 30);
}
return jTextField;
}
private JButton getJButtonok() {
if(jButton == null) {
jButton = new javax.swing.JButton();
jButton.setBounds(400, 10, 100,30);
jButton.setText("begin");
}
return jButton;
}
private JButton getJButtoncancel() {
if(jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(530, 10, 100, 30);
jButton1.setText("stop");
}
return jButton1;
}
private JButton getJButtonzero() {
if(jButton2 == null) {
jButton2 = new JButton();
jButton2.setBounds(310, 10, 80, 30);
jButton2.setText("清零");
}
return jButton2;
}
public static void main(String[] args)
{
first w = new first();
w.setVisible(true);
}
}

把你的getJTextArea()函数改一下就行了。

完整的程序如下:(注意getJTextArea()函数)

//package cn.edu.jnu.www;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;
public class first extends JFrame{
private JLabel jLabel;
private JTextField jTextField;
private JButton jButton,jButton1,jButton2;
private JTextArea jtextarea;
private JScrollPane sp;
public first()
{
 super();
 this.setSize(700, 500);
 this.getContentPane().setLayout(null);
 this.add(getJLabel(), null);
 this.add(getJTextField(), null);
 this.add(getJButtonok(), null);
 this.add(getJButtoncancel(),null);
 this.add(getJButtonzero(),null);
 this.setBackground(Color.red);
 this.add(getJTextArea(), null);
 
 this.setTitle("calculator");
}
private JScrollPane getJTextArea(){
 if(jtextarea==null){
  jtextarea=new JTextArea();
  //jtextarea.setBounds(5, 45, 650, 400);
 }
 //jtextarea.setLineWrap(true);
 sp=new JScrollPane(jtextarea);
 sp.setBounds(5, 45, 650, 400);
 //sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
 return sp;
}
private JLabel getJLabel() {
 if(jLabel == null) {
 jLabel = new javax.swing.JLabel();
 jLabel.setBounds(10, 10, 150, 30);
 jLabel.setText("请输入需要输出的位数:");
 }
 
 return jLabel;
}
private JTextField getJTextField() {
 if(jTextField == null) {
 jTextField = new javax.swing.JTextField();
 jTextField.setBounds(150, 10, 160, 30);
 }
 return jTextField;
}
private JButton getJButtonok() {
 if(jButton == null) {
 jButton = new javax.swing.JButton();
 jButton.setBounds(400, 10, 100,30);
 jButton.setText("begin");
 }
 return jButton;
}
private JButton getJButtoncancel() {
 if(jButton1 == null) {
 jButton1 = new JButton();
 jButton1.setBounds(530, 10, 100, 30);
 jButton1.setText("stop");
 }
 return jButton1;
}
private JButton getJButtonzero() {
 if(jButton2 == null) {
 jButton2 = new JButton();
 jButton2.setBounds(310, 10, 80, 30);
 jButton2.setText("清零");
 }
 return jButton2;
}
public static void main(String[] args)
{
 first w = new first();
 w.setVisible(true);
}
}

追问

谢谢,滚动条有了,不过为什么要这样啊?怎么不是返回文本区呢?还有怎么用sp去设定文本区的位置和长宽?

追答

因为JTextArea放入到了JScrollPane中,而你设定了空布局,所以要对sp设定位置和长宽。

追问

那可不可以将JScrollPane放入到JTextArea中,这个和空布局有关系?怎么可以让那个文本区只有垂直滚动条呢?

追答

因为JScrollPane是一个滚动条的容器所以可以把JTextArea或者JTable等组件加入到其中,使这些组件有垂直和水平滚动条,如果要求只有垂直滚动条只要把//jtextarea.setLineWrap(true);这一句的注释符号"//"去掉就行了。
因为你设定了空布局所以要对所有加入到JFrame中的组件设定位置和长宽,包括sp.

温馨提示:内容为网友见解,仅供参考
无其他回答

java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个...
JScrollPane scrollPane=new JScrollPane(comp);\/\/comp是需要加滑动滚条的组件 比如JTextArea jta=new JTextArea();然后JScrollPane scrollPane=new JScrollPane(jta);这样当内容多时jta右边就会出现滚动条了 我QQ821722142

java如何在文本框上加滚动条?
\\x0d\\x0a JTextArea jta=new JTextArea(8,20);\\x0d\\x0a JScrollPane jsp=new JScrollPane(jta);\/\/新建一个滚动条界面,将文本框传入\\x0d\\x0a jp.add(jsp);\/\/注意:将滚动条界面添加到组建中,而不是添加文本框了\\x0d\\x0a jf.add(jp);\\x0d\\x0a \\x0d\\x0a jf.pack...

Java swing怎么搞出滚动条
增加滚动条的方法:\/\/分别设置水平和垂直滚动条总是出现 scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);scroll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);\/\/分别设置水平和垂直滚动条自动出现 \/\/scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL...

java~为什么给JTextArea添加的滚动条不显示??
JScrollPane是个容器,你的代码把JTextArea既加到了JSP上,又加到了JFRM上。应该将contentPane.add(jTextArea);一行去掉。当然这不是滚动条不显示的原因。JSP是默认需要时才显示滚动条的。如果要强制显示,使用下面的方法:sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);sp.se...

...按钮分别为上一页,下一页,来控制 JTextArea,如何实现滚动条通过点击...
使用DefaultEditorKit类提供的pageUpAction,pageDownAction翻页。自动翻页使用javax.swing.Timer调用

JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行
JTextArea经常和JScrollPane 搭配使用. 这样可以通过滚动条显示更多的内容.如果要使文本域显示最后1行, 有2种方式:第一种方式:操控垂直滚动条, 把垂直滚动条移动到最后面即可 JTextArea jta = new JTextArea();jta.setText("添加很多行的文字");JScrollPane jsp = new JScrollPane(jta);jsp.get...

java swing jScrollPane1的问题,此程序的jScrollPane1无法滚动,如何让...
static void main(String[] args) { Scroll sc = new Scroll();sc.setVisible(true);} } 滚动面板有使用条件,就是要先把它添加到固定大小的一个文本组件里,才可以看到你想看的滚动效果。上面的代码是我给你写的,你运行程序,在文本框里写文本,你会发现滚动条会出现的。你去看看API吧。

Java swing这是什么控件
你是不是用的 JTextArea ?试试 awt 包中的TextArea

java Swing 加入一个滚动条后不出东西了,为什么
楼主,添加滚动条要这么写 jspContent=new JScrollPane(jtaContent);\/\/这里传入要添加滚动条的控件 jspContent.setBounds(0,60,390,470);\/\/jspContent.add(jtaContent); 这句不要 要想将控件与JScrollPane关联起来,不能用add方法,必须使用setViewportView,使用add添加的话JScrollPane是不会显示的,也不...

Java设计并实现一个应用程序,能够读取一个文本文件中的内容并显示,同时...
步骤一: 需要搭建一个整体的外观, 调整布局和组件的位置.主要需要使用的组件 JTextField 文本框组件: 用于当做地址栏, 填写文件的路径 JButton 按钮, 用于响应点击事件,根据地址栏的地址读取文件, 并且显示到文本域里 JTextArea 文本域, 用于显示文件里的字符串信息 JLabel 标签, 用于显示行数信息 ...

相似回答