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,则它根本不会移动
知道发生了什么事吗?
答案 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);
}
}