Swing中的滚动条

Swing中的滚动条

 

下面的代码就演示了为JTextArea、JList增加滚动条的代码:

package com.cownew.Char19;

import javax.swing.SwingUtilities;

import java.awt.BorderLayout;

import javax.swing.DefaultListModel;

import javax.swing.JPanel;

import javax.swing.JFrame;

import javax.swing.JTextArea;

import javax.swing.ListModel;

import java.awt.Rectangle;

import javax.swing.JList;

import javax.swing.JScrollPane;

public class ScrollPaneTest1 extends JFrame

{

private JPanel jContentPane = null;

private JTextArea jTextArea = null;

private JList jList = null;

private JScrollPane jScrollPane = null;

private JScrollPane jScrollPane1 = null;

private JList jList1 = null;

private JTextArea jTextArea1 = null;

private JTextArea getJTextArea()

{

if (jTextArea == null)

{

jTextArea = new JTextArea();

jTextArea.setBounds(new Rectangle(12, 7, 95, 71));

}

return jTextArea;

}

private JList getJList()

{

if (jList == null)

{

jList = new JList();

jList.setBounds(new Rectangle(8, 92, 106, 71));

DefaultListModel listModel = new DefaultListModel();

listModel.addElement("22222");

listModel.addElement("33333333");

listModel.addElement("55555555555555");

listModel.addElement("8888888888");

listModel.addElement("88888888");

listModel.addElement("999999999");

jList.setModel(listModel);

}

return jList;

}

private JScrollPane getJScrollPane()

{

if (jScrollPane == null)

{

jScrollPane = new JScrollPane();

jScrollPane.setBounds(new Rectangle(143, 7, 122, 75));

jScrollPane.setViewportView(getJTextArea1());

}

return jScrollPane;

}

private JScrollPane getJScrollPane1()

{

if (jScrollPane1 == null)

{

jScrollPane1 = new JScrollPane();

jScrollPane1.setBounds(new Rectangle(142, 96, 128, 68));

jScrollPane1.setViewportView(getJList1());

}

return jScrollPane1;

}

private JList getJList1()

{

if (jList1 == null)

{

jList1 = new JList();

DefaultListModel listModel = new DefaultListModel();

listModel.addElement("22222");

listModel.addElement("33333333");

listModel.addElement("8888888888888888888888888888");

listModel.addElement("8888888888");

listModel.addElement("88888888");

listModel.addElement("999999999");

jList1.setModel(listModel);

}

return jList1;

}

private JTextArea getJTextArea1()

{

if (jTextArea1 == null)

{

jTextArea1 = new JTextArea();

}

return jTextArea1;

}

public static void main(String[] args)

{

SwingUtilities.invokeLater(new Runnable() {

public void run()

{

ScrollPaneTest1 thisClass = new ScrollPaneTest1();

thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

thisClass.setVisible(true);

}

});

}

public ScrollPaneTest1()

{

super();

initialize();

}

private void initialize()

{

this.setSize(300, 200);

this.setContentPane(getJContentPane());

this.setTitle("JFrame");

}

private JPanel getJContentPane()

{

if (jContentPane == null)

{

jContentPane = new JPanel();

jContentPane.setLayout(null);

jContentPane.add(getJTextArea(), null);

jContentPane.add(getJList(), null);

jContentPane.add(getJScrollPane(), null);

jContentPane.add(getJScrollPane1(), null);

}

return jContentPane;

}

}

运行效果图:

Swing中的滚动条_第1张图片

图 17.9

JScrollPane还能为组合界面增加滚动条:

package com.cownew.Char19;

import java.awt.Dimension;

import java.awt.Rectangle;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JSlider;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

public class ScrollPaneTest2 extends JFrame

{

private JPanel jContentPane = null;

private JScrollPane jScrollPane = null;

private JPanel jPanel = null;

private JButton jButton = null;

private JButton jButton1 = null;

private JCheckBox jCheckBox = null;

private JTextField jTextField = null;

private JSlider jSlider = null;

private JScrollPane getJScrollPane()

{

if (jScrollPane == null)

{

jScrollPane = new JScrollPane();

jScrollPane.setBounds(new Rectangle(28, 17, 142, 114));

jScrollPane.setViewportView(getJPanel());

}

return jScrollPane;

}

private JPanel getJPanel()

{

if (jPanel == null)

{

jPanel = new JPanel();

jPanel.setLayout(null);

jPanel.add(getJButton(), null);

jPanel.add(getJButton1(), null);

jPanel.add(getJCheckBox(), null);

jPanel.add(getJTextField(), null);

jPanel.add(getJSlider(), null);

jPanel.setPreferredSize(new Dimension(300,200));

}

return jPanel;

}

private JButton getJButton()

{

if (jButton == null)

{

jButton = new JButton();

jButton.setBounds(new Rectangle(6, 10, 74, 28));

}

return jButton;

}

private JButton getJButton1()

{

if (jButton1 == null)

{

jButton1 = new JButton();

jButton1.setBounds(new Rectangle(102, 9, 82, 30));

}

return jButton1;

}

private JCheckBox getJCheckBox()

{

if (jCheckBox == null)

{

jCheckBox = new JCheckBox();

jCheckBox.setBounds(new Rectangle(17, 56, 93, 21));

jCheckBox.setText("aaaaabbb");

}

return jCheckBox;

}

private JTextField getJTextField()

{

if (jTextField == null)

{

jTextField = new JTextField();

jTextField.setBounds(new Rectangle(126, 57, 99, 22));

}

return jTextField;

}

private JSlider getJSlider()

{

if (jSlider == null)

{

jSlider = new JSlider();

jSlider.setBounds(new Rectangle(20, 111, 205, 25));

}

return jSlider;

}

public static void main(String[] args)

{

SwingUtilities.invokeLater(new Runnable() {

public void run()

{

ScrollPaneTest2 thisClass = new ScrollPaneTest2();

thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

thisClass.setVisible(true);

}

});

}

public ScrollPaneTest2()

{

super();

initialize();

}

private void initialize()

{

this.setSize(221, 177);

this.setContentPane(getJContentPane());

this.setTitle("JFrame");

}

private JPanel getJContentPane()

{

if (jContentPane == null)

{

jContentPane = new JPanel();

jContentPane.setLayout(null);

jContentPane.add(getJScrollPane(), null);

}

return jContentPane;

}

}

运行效果图:

Swing中的滚动条_第2张图片

图 17.10

对于这种组合界面必须为界面设定一个最佳尺寸(PreferredSize),这样JScrollPane才知道如何显示滚动条:jPanel.setPreferredSize(new Dimension(300,200))。

JScrollPane中的ViewPort是一种特殊的对象,通过它就可以查看基层组件,滚动条其实就是沿着组件移动“视点”,这样就可以查看隐藏的部分。

你可能感兴趣的:(Swing中的滚动条)