JPanel
- JPanel和AWT中的Panel组件使用方法基本一致,它是一个无边框,不能被移动、放大、缩小或者关闭的面板,它的默认布局管理器是FlowLayout。当然也可以使用JPanel带参数的构造函数JPanel(LayoutManager layout)或者它的setLayout()方法为其制定布局管理器。
JScrollPane
- 与JPanel不同的是,JScrollPane是一个带有滚动条的面板容器,而且这个面板只能添加一个组件,如果想在JScrollPane面板中添加多个组件,应该先将组件添加到JPanel中,然后将JPanel添加到JScrollPane中。
- JScrollPane的常用构造方法,如表所示.

代码演示在JScrollPane中插入表格
package Interface;
import dao.RiverDao;
import deal.SettingColorDeal;
import exception.riverException;
import model.River;
import javax.swing.*;
import java.awt.*;
import java.util.List;
public class ShowAllRivers extends JFrame {
private JTable table;
private JScrollPane pane;
public ShowAllRivers() {
this.setSize(1000, 500);
this.setTitle("显示所有河流信息");
this.setLayout(null);
if (SettingColorDeal.theme != null) {
this.getContentPane().setBackground(SettingColorDeal.theme);
}
this.setResizable(false);
this.setVisible(true);
RiverDao dao = new RiverDao();
try {
List<River> rivers = dao.SelectAll();
init(rivers);
} catch (riverException e) {
JOptionPane.showMessageDialog(this, "获取信息异常!");
}
}
private void init(List<River> rivers) {
String[] titles = new String[] {"河流编号", "河流名称", "河流长度", "地理位置", "河流类型", "治理情况"};
String[][] values = new String[rivers.size()][6];
for (int i = 0; i < rivers.size(); i++) {
River river = rivers.get(i);
values[i][0] = String.valueOf(river.getRiver_num());
values[i][1] = river.getRiver_name();
values[i][2] = river.getRiver_length() + " (Km)";
values[i][3] = river.getRiver_location();
values[i][4] = river.getRiver_class();
values[i][5] = river.getRiver_status();
}
table = new JTable(values, titles);
table.getTableHeader().setFont(new Font("标楷体",Font.BOLD,16));
table.setFont(new Font("",0,16));
pane = new JScrollPane(table);
pane.setSize(900, 400);
pane.setLocation(50, 50);
pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
this.add(pane);
}
}
