Swing之滚动条

JScrollPane的创建。  
1、创建时指定内部控件,如: JScrollPane sp = new JScrollPane(img);  
2、创建后指出内部控件,如:scrollPane.setViewportView(panel1);  
常用的一些方法  
指定内部控件  
scrollPane.setViewportView(panel1);  
设定水平表头  
scrollPane.setColumnHeaderView(new JLabel("水平表头"));  
设定垂直表头  
scrollPane.setRowHeaderView(new JLabel("垂直表头"));  
设定显示区的边框格式  
scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));  
设定转角处样式  
scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,new JLabel(new ImageIcon("./icons/glass.jpg")));  
scrollPane.setCorner(JScrollPane.UPPER_RIGHT_CORNER,new JLabel(new ImageIcon("./icons/glass.jpg")));  

setViewportView    
public   void   setViewportView(Component   view)创建一个视口(如果有必要)并设置其视图。不直接为   JScrollPane   构造方法提供视图的应用程序应使用此方法指定将显示在滚动窗格中的滚动组件子级。例如: 

JScrollPane   scrollpane   =   new   JScrollPane();    
scrollpane.setViewportView(myBigComponentToScroll);   

应用程序不应将子级直接添加到滚动窗格。 

1。定义实例:JScrollPane jsp=new JScrollPane(某个继承自JPanel类的实例 pane); 
2。设置初始大小:jsp.setPreferredSize(new Dimension(200,200)); 
3。在适当的时候(已经判断出jsp容纳不下里面的内容时)重新设置大小:jsp.setPreferredSize(一个新的Dimension); 
4。调用jsp.revalidate(); 
5。调用jsp.repaint(); 
Tips: 
有一个JScrollPane的成员函数是scrollRectToVisible(Rectangle rect);该成员函数能够使某一块rect在当前的滚动面板内可见,即滚动面板能够通过滚动来使得需要显示的区域(由rect界定出的那块区域)被显示。  
1、在使用了JScrollPane的JTextArea中,当指定JTextArea大小后,如何使当一行的数据过长时,自动折行,而不是出现横滚动条; 
2、在使用了JScrollPane的JTable中,如何指定JTable的宽度,当大于JScrollPane的显示区域时,自动显示横滚动条,而不是压缩JTable中的每一列的宽度。  
可以参照java 图形核心卷2的介绍http://ecapital.myetang.com/swing/tutorial/s02/index.html 
第一个问题:

mport java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class JTextArea2{ 
public static void main(String[] args){ 
  JFrame f=new JFrame("JTextArea2"); 
  Container contentPane=f.getContentPane(); 
  contentPane.setLayout(new BorderLayout()); 
  JPanel p1=new JPanel(); 
  p1.setLayout(new GridLayout(1,1)); 
  p1.setBorder(BorderFactory.createTitledBorder("构造TextArea-使用GridLayout,加ScrollBar")); 
  JTextArea t1=new JTextArea(5,25); 
  t1.setTabSize(10); 
  t1.setFont(new Font("标楷体",Font.BOLD,16)); 
  t1.setLineWrap(true);//激活自动换行功能 
  t1.setWrapStyleWord(true);//激活断行不断字功能 
  p1.add(new JScrollPane(t1));//将JTextArea放入JScrollPane中,这样就能利用滚动的效果看到输入超过JTextArea高度的 
  //文字. 
  contentPane.add(p1); 
  f.pack(); 
  f.show(); 
  f.addWindowListener(new WindowAdapter(){ 
    public void windowClosing(WindowEvent e){ 
      System.exit(0); 
    } 
  }); 
} 
}

其实在Document中你可以更灵活的控制 
第二个问题,把JTable的AUTO_RESIZE_OFF  
、在使用了JScrollPane的JTable中,如何指定JTable的宽度,当大于JScrollPane的显示区域时,自动显示横滚动条,而不是压缩JTable中的每一列的宽度 
add the following line: 
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

更多学习资料:Here

原文地址:https://www.cnblogs.com/cha1r/p/3438420.html