📄 s19.htm
字号:
<SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up.js"></SCRIPT><SCRIPT LANGUAGE="JavaScript" SRC="/-fs0/sys/pop-up-all.js"></SCRIPT><html><head><title>易都网--Java 2 图形设计卷Ⅱ:SWING</title><LINK rel="stylesheet" href="../../../_public/javaa.css"><meta http-equiv="Content-Type" content="text/html; charset=GBK"><script language="JavaScript" src="../../../_public/javaa.js"></script><meta name="keywords" content="Java,JSP,ASP,PHP,J2EE,EJB,JavaScript,C/C++,ASM,CSS,HTML,XML,网络安全,MySQL,ACCESS"></head><body bgcolor="#FFFFFF"><table border=0 cellpadding=0 cellspacing=0 width="100%"> <tbody> <script language="javascript">print2()</script> <tr> <td width="100%"> <table bgcolor=#EEEEEE border=0 cellpadding=3 cellspacing=0 width="100%"> <tbody> <tr> <td class=f1 id=thetd width="100%"> <p>[<a href="index.html" target="_self">目录</a>][<a href="s18.htm">上一页</a>][<a href="s20.htm">下一页</a>]</p> <p align="center"><b>第19章 表格</b></p> <p> 19.1 表格和滚动</p> <p align="center"><b>例19-1 表格和滚动窗格</b></p> <hr noshade size="1"> import javax.swing.*;<br> import java.awt.*;<br> import java.awt.event.*; <p>public class Test extends JFrame {<br> public Test() {<br> Container contentPane = getContentPane();</p> <p> contentPane.setLayout(new FlowLayout());<br> contentPane.add(new JTable(10,10)); <br> contentPane.add(new JScrollPane(new JTable(10,10)));<br> }<br> public static void main(String args[]) {<br> GraphicJavaWindowHandler.launch(new Test(),<br> "Tables and Scrollpanes",100,100,850,700);<br> }<br> }<br> class GraphicJavaWindowHandler extends WindowAdapter {<br> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> f.setTitle(title);<br> f.setBounds(x,y,w,h);<br> f.setVisible(true);</p> <p> f.setDefaultCloseOperation(<br> WindowConstants.DISPOSE_ON_CLOSE);</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosed(WindowEvent e) {<br> System.exit(0);<br> }<br> });<br> }<br> }</p> <hr size="1" noshade> <p> 19.2 表格模型</p> <p> </p> <p align="center"> </p> <p> 19.2.1 表格数据模型</p> <p> </p> <p align="center"> </p> <p> 19.2.2 TableModel接口</p> <p> </p> <p align="center"> </p> <p> 19.2.3 AbstractTableModel</p> <p> </p> <p align="center"><b>例19-2 AbstractTableModel的一个简单扩展</b></p> <hr noshade size="1"> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.table.*;<br> import java.util.*; <p>public class Test extends JFrame {<br> JTable table = new JTable(<br> new AbstractTableModel() {<br> int rows = 100, cols = 10;</p> <p> public int getRowCount() { return rows; }<br> public int getColumnCount() { return cols; }</p> <p> public Object getValueAt(int row, int col) {<br> return "(" + row + "," + col + ")";<br> }<br> });</p> <p> public Test() {<br> getContentPane().add(new JScrollPane(table),<br> BorderLayout.CENTER);<br> }<br> public static void main(String args[]) {<br> GJApp.launch(<br> new Test(), "A Simple Model",300,300,450,300); <br> }<br> }<br> class GJApp extends WindowAdapter {<br> static private JPanel statusArea = new JPanel();<br> static private JLabel status = new JLabel(" ");<br> static private ResourceBundle resources;</p> <p> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> launch(f,title,x,y,w,h,null); <br> }<br> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h,<br> String propertiesFilename) {<br> f.setTitle(title);<br> f.setBounds(x,y,w,h);<br> f.setVisible(true);</p> <p> statusArea.setBorder(BorderFactory.createEtchedBorder());<br> statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));<br> statusArea.add(status);<br> status.setHorizontalAlignment(JLabel.LEFT);</p> <p> f.setDefaultCloseOperation(<br> WindowConstants.DISPOSE_ON_CLOSE);</p> <p> if(propertiesFilename != null) {<br> resources = ResourceBundle.getBundle(<br> propertiesFilename, Locale.getDefault());<br> }</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosed(WindowEvent e) {<br> System.exit(0);<br> }<br> });<br> }<br> static public JPanel getStatusArea() {<br> return statusArea;<br> }<br> static public void showStatus(String s) {<br> status.setText(s);<br> }<br> static Object getResource(String key) {<br> if(resources != null) {<br> return resources.getString(key);<br> }<br> return null;<br> }<br> }</p> <hr size="1" noshade> <p align="center"> </p> <p> 19.2.4 DefaultTableModel</p> <p> </p> <p align="center"><b>例19-3 使用DefaultTableModel</b></p> <hr noshade size="1"> import java.awt.*;<br> import java.awt.event.*;<br> import javax.swing.*;<br> import javax.swing.table.*;<br> import java.util.*; <p>public class Test extends JFrame {<br> private int rows=3, cols=5;<br> private Object[] rowData = new Object[cols];</p> <p> private DefaultTableModel model = new DefaultTableModel();<br> private JTable table = new JTable(model);</p> <p> public Test() {<br> for(int c=0; c < cols; ++c)<br> model.addColumn("Column " + Integer.toString(c));</p> <p> for(int r=0; r < rows; ++r) {<br> for(int c=0; c < cols; ++c) {<br> rowData[c] = "(" + r + "," + c + ")";<br> }<br> model.addRow(rowData);<br> }<br> getContentPane().add(new JScrollPane(table),<br> BorderLayout.CENTER);<br> getContentPane().add(new ControlPanel(),<br> BorderLayout.NORTH);<br> }<br> public static void main(String args[]) {<br> GJApp.launch(new Test(),<br> "Using DefaultTableModel",150,150,600,350); <br> }<br> class ControlPanel extends JPanel {<br> private JButton rowButton = new JButton("Add Row"),<br> colButton = new JButton("Add Column");</p> <p> public ControlPanel() {<br> add(rowButton);<br> add(colButton);</p> <p> rowButton.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> int rowCount = model.getRowCount();<br> int colCount = model.getColumnCount();</p> <p> if(colCount > rowData.length)<br> rowData = new Object[colCount];</p> <p> for(int c=0; c < colCount; ++c) {<br> rowData[c] = "(" + rowCount + "," + <br> c + ")";<br> }<br> model.addRow(rowData);<br> }<br> });<br> colButton.addActionListener(new ActionListener() {<br> public void actionPerformed(ActionEvent e) {<br> int colCount = model.getColumnCount();<br> model.addColumn("Column " + colCount);</p> <p> // Bug: the call to sizeColumnsToFit() <br> // should not be necessary<br> table.sizeColumnsToFit(-1);<br> }<br> });<br> }<br> }<br> }<br> class GJApp extends WindowAdapter {<br> static private JPanel statusArea = new JPanel();<br> static private JLabel status = new JLabel(" ");<br> static private ResourceBundle resources;</p> <p> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h) {<br> launch(f,title,x,y,w,h,null); <br> }<br> public static void launch(final JFrame f, String title,<br> final int x, final int y, <br> final int w, int h,<br> String propertiesFilename) {<br> f.setTitle(title);<br> f.setBounds(x,y,w,h);<br> f.setVisible(true);</p> <p> statusArea.setBorder(BorderFactory.createEtchedBorder());<br> statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));<br> statusArea.add(status);<br> status.setHorizontalAlignment(JLabel.LEFT);</p> <p> f.setDefaultCloseOperation(<br> WindowConstants.DISPOSE_ON_CLOSE);</p> <p> if(propertiesFilename != null) {<br> resources = ResourceBundle.getBundle(<br> propertiesFilename, Locale.getDefault());<br> }</p> <p> f.addWindowListener(new WindowAdapter() {<br> public void windowClosed(WindowEvent e) {<br> System.exit(0);<br> }<br> });<br> }<br> static public JPanel getStatusArea() {<br> return statusArea;<br> }<br> static public void showStatus(String s) {<br> status.setText(s);<br> }<br> static Object getResource(String key) {<br> if(resources != null) {<br> return resources.getString(key);<br> }<br> return null;<br> }<br> }</p> <hr size="1" noshade> <p> 19.2.5 表格模型、缺省绘制器和缺省编辑器</p> <p> </p> <p align="center"><b>例19-4 使用缺省绘制器和编辑器</b></p> <hr noshade size="1"> import java.awt.*;<br> import java.awt.event.*;<br> import java.util.*;<br> import javax.swing.*;<br> import javax.swing.table.*; <p>public class Test extends JFrame {<br> String[] columnNames = {<br> "Name", "Check-In Date", "Check-Out Date", "Smoking",<br> "Fax", "Laptop", "Room Rate", "Photo",<br> };</p> <p> Date dayOne = (new GregorianCalendar(2000, 10, 5)).getTime();<br> Date dayTwo = (new GregorianCalendar(2000, 10, 7)).getTime();</p> <p> Object[][] data = {<br> { "Andrews", dayOne, dayTwo,<br> new Boolean(true), new Boolean(true), <br> new Boolean(true), new Double(79.99),<br> new ImageIcon("tenchi.jpg")},</p> <p> { "Anthony", dayOne, dayTwo, <br> new Boolean(false), new Boolean(false), <br> new Boolean(false), new Double(69.99),<br> new ImageIcon("washu.jpg")},</p> <p> { "Woodard", dayOne, dayTwo, <br> new Boolean(true), new Boolean(false), <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -