在Java中更改JScrollPane的边界

时间:2016-05-02 01:42:36

标签: java swing jscrollpane

Helloo! 在Java应用程序中,我有一个JScrollPane,在该卷轴中我有一个JTextArea

JTextArea TextArea = new JTextArea("Text");
scroll = new JScrollPane(TextArea);
scroll.setBounds(150,100,250,100);

我得到了卷轴。 但是如果用户单击JButton,JScrollPane的位置应该更改... 我有这个代码,如果滚动没有TextArea

,它就可以工作
scroll.setBounds(50,100,250,100);

但是如果滚动具有TextArea,则它根本不会移动

知道发生了什么事吗?

2 个答案:

答案 0 :(得分:2)

  

更改JScrollPane ..

的范围

界限归结为组件的位置和大小。

更改滚动窗格的大小的最佳方法是更改​​其显示的组件的大小。可以通过设置行数和大小来调整文本区域的大小。列(在构造函数中轻松指定),或通过设置不同的字体大小。

滚动窗格定位的最佳方法是使用布局,以及white space的布局填充和边框。

答案 1 :(得分:0)

使用vScrollPane.setValue()hScrollPane.setValue()方法。

喜欢这个

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

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;

class JScrollPaneToTopAction implements ActionListener {
  JScrollPane scrollPane;
  public JScrollPaneToTopAction(JScrollPane scrollPane) {
    if (scrollPane == null) {
      throw new IllegalArgumentException(
        "JScrollPaneToTopAction: null JScrollPane");
    }
    this.scrollPane = scrollPane;
  }
  public void actionPerformed(ActionEvent actionEvent) {
    JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();
    JScrollBar horizontalScrollBar = scrollPane.getHorizontalScrollBar();
    verticalScrollBar.setValue(20);
    horizontalScrollBar.setValue(100);
  }
}


public class JScrollPaneToTopActionDemo {

  public static void main(String args[]) {
    JFrame frame = new JFrame("Tabbed Pane Sample");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JLabel label = new JLabel("Label");
    label.setPreferredSize(new Dimension(1000, 1000));
    JScrollPane jScrollPane = new JScrollPane(label);

    JButton bn = new JButton("Move");

    bn.addActionListener(new JScrollPaneToTopAction(jScrollPane));

    frame.add(bn, BorderLayout.SOUTH);
    frame.add(jScrollPane, BorderLayout.CENTER);
    frame.setSize(400, 150);
    frame.setVisible(true);
  }
}