⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s19.htm

📁 提供给JAVA编程者图形界面卷
💻 HTM
📖 第 1 页 / 共 5 页
字号:
              return resources.getString(key);<br>              }<br>              return null;<br>              }<br>              }</p>            <hr size="1" noshade>            <p align="center">&nbsp; </p>            <p> 19.4.4 锁定左边列</p>            <p>&nbsp;</p>            <p align="center"><b>例19-9 锁定表格的左列</b></p>            <hr noshade size="1">            import java.awt.*;<br>            import java.awt.event.*;<br>            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import javax.swing.table.*;            <p>public class Test extends JFrame {<br>              Object[][] listings = new Object[][] {<br>              { &quot;28 Pickelodan&quot;, &quot;Mork and Mindy&quot;, &quot;Dukes               of Hazard&quot;, <br>              &quot;I Love Lucy&quot;, &quot;Andy Griffith&quot;, &quot;Mission               Impossible&quot; },</p>            <p> { &quot;29 Dizey&quot;, &quot;Rulan&quot;, &quot;&lt;-- Mulan&quot;,               &quot;&lt;-- Mulan&quot;, <br>              &quot;&lt;-- Mulan&quot;, &quot;&lt;-- Mulan&quot; },</p>            <p> { &quot;31 NBT&quot;, &quot;Nightly News&quot;, &quot;40/20&quot;,               <br>              &quot;&lt;-- 40/20&quot;, &quot;LimeTime&quot;, &quot;&lt;-- LimeTime&quot;               },</p>            <p> { &quot;32 AnimalUniverse&quot;, &quot;Amazing Animals&quot;,&quot;Animal               Rescues&quot;,<br>              &quot;Cute Animals&quot;, &quot;Killer Animals&quot;, <br>              &quot;Big and Small Animals&quot; },</p>            <p> { &quot;34 DSPN&quot;, &quot;Tuesday Night FootBall&quot;, <br>              &quot;&lt;--Tuesday Night FootBall&quot;, &quot;&lt;--Tuesday Night               FootBall&quot;, <br>              &quot;&lt;--Tuesday Night FootBall&quot;, &quot;&lt;--Tuesday Night               FootBall&quot;},</p>            <p> { &quot;37 TLC&quot;, &quot;Mind Mysteries&quot;, &quot;Our World&quot;,               <br>              &quot;Ancient Wonders&quot;, &quot;UFOs&quot;, &quot;Ancient Inventions&quot;               },</p>            <p> { &quot;38 THC&quot;, &quot;The Civil War&quot;, &quot;Stalin&quot;,               <br>              &quot;Watergate&quot;, &quot;Kent State&quot;, &quot;WWII&quot;               },<br>              };<br>              Object[] columnNames = new Object[] {<br>              &quot;Channel&quot;, &quot;7:30&quot;, &quot;8:00&quot;, &quot;8:30&quot;,               &quot;9:00&quot;, &quot;9:30&quot;<br>              };<br>              TableModel sharedModel = new DefaultTableModel(<br>              listings, columnNames);<br>              JTable table = new JTable(sharedModel),<br>              headerTable = new JTable(sharedModel);</p>            <p> TableColumnModel tcm = table.getColumnModel();<br>              TableColumn firstColumn = tcm.getColumn(0);</p>            <p> public Test() {<br>              Container cp = getContentPane();</p>            <p> setActualPreferredColumnWidths(table);<br>              setActualPreferredColumnWidths(headerTable);</p>            <p> table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);<br>              headerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);</p>            <p> headerTable.getTableHeader().setReorderingAllowed(false);</p>            <p> headerTable.setPreferredScrollableViewportSize(<br>              new Dimension(<br>              firstColumn.getPreferredWidth() +<br>              headerTable.getColumnModel().getColumnMargin(), <br>              0));</p>            <p> cp.add(new ControlPanel(), BorderLayout.NORTH);<br>              cp.add(new JScrollPane(table), BorderLayout.CENTER);<br>              }<br>              class ControlPanel extends JPanel {<br>              JCheckBox checkBox = new JCheckBox(&quot;First Column Locked&quot;);</p>            <p> public ControlPanel() {<br>              add(checkBox);</p>            <p> checkBox.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              JScrollPane scrollPane = (JScrollPane)<br>              SwingUtilities.getAncestorOfClass(<br>              JScrollPane.class, table);</p>            <p> if(checkBox.isSelected()) {<br>              tcm.removeColumn(firstColumn);<br>              scrollPane.setRowHeaderView(headerTable);<br>              scrollPane.setCorner(<br>              JScrollPane.UPPER_LEFT_CORNER,<br>              headerTable.getTableHeader());<br>              }<br>              else {<br>              tcm.addColumn(firstColumn);</p>            <p> int numCols = tcm.getColumnCount();<br>              tcm.moveColumn(numCols-1, 0);<br>              scrollPane.setRowHeaderView(null);<br>              }<br>              }<br>              });<br>              }<br>              }<br>              public void setActualPreferredColumnWidths(JTable table) {<br>              int columnCount = table.getColumnCount();</p>            <p> for(int i=0; i &lt; columnCount; ++i) {<br>              TableColumn c = table.getColumnModel().getColumn(i);<br>              int w = getActualPreferredColumnWidth(c);</p>            <p> c.setPreferredWidth(w);<br>              }<br>              }<br>              public int getActualPreferredColumnWidth(TableColumn col) {<br>              int hw = columnHeaderWidth(col), // hw = header width<br>              cw = widestCellInColumn(col); // cw = column width</p>            <p> return hw &gt; cw ? hw : cw;<br>              }<br>              private int columnHeaderWidth(TableColumn col) {<br>              TableCellRenderer renderer = col.getHeaderRenderer();</p>            <p> Component comp = renderer.getTableCellRendererComponent(<br>              table, col.getHeaderValue(), <br>              false, false, 0, 0);</p>            <p> return comp.getPreferredSize().width;<br>              }<br>              private int widestCellInColumn(TableColumn col) {<br>              int c = col.getModelIndex(), width=0, maxw=0;</p>            <p> for(int r=0; r &lt; table.getRowCount(); ++r) {<br>              TableCellRenderer renderer = <br>              table.getCellRenderer(r,c);</p>            <p> Component comp = <br>              renderer.getTableCellRendererComponent(<br>              table, table.getValueAt(r,c), <br>              false, false, r, c);</p>            <p> width = comp.getPreferredSize().width;<br>              maxw = width &gt; maxw ? width : maxw;<br>              }<br>              return maxw;<br>              }<br>              public static void main(String args[]) {<br>              GraphicJavaApplication.launch(<br>              new Test(),&quot;Locking the Left-Hand Column&quot;,<br>              300,300,600,210);<br>              }<br>              }<br>              class GraphicJavaApplication 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.5 表格选取</p>            <p>&nbsp;</p>            <p align="center"><b>例19-10 表格选取</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import javax.swing.table.*;<br>            import java.awt.*;<br>            import java.awt.event.*;            <p>public class Test extends JFrame {<br>              Object[] selectionModes = new Object[] {<br>              &quot;SINGLE_SELECTION&quot;,<br>              &quot;SINGLE_INTERVAL_SELECTION&quot;,<br>              &quot;MULTIPLE_INTERVAL_SELECTION&quot;,<br>              };<br>              int[] selectionConstants = {<br>              ListSelectionModel.SINGLE_SELECTION,<br>              ListSelectionModel.SINGLE_INTERVAL_SELECTION,<br>              ListSelectionModel.MULTIPLE_INTERVAL_SELECTION,<br>              };</p>            <p> JTable table = new JTable(10,10);</p>            <p> public Test() {<br>              Container contentPane = getContentPane();<br>              contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br>              contentPane.add(new JScrollPane(table), <br>              BorderLayout.CENTER);</p>            <p> }<br>              class ControlPanel extends JPanel {<br>              JComboBox combo = new JComboBox(selectionModes);</p>            <p> public ControlPanel() {<br>              setBorder(BorderFactory.createTitledBorder(<br>              &quot;Selection Modes&quot;));<br>              add(combo);<br>              initializeCombo();</p>            <p> combo.addActionListener(new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int index = combo.getSelectedIndex();</p>            <p> table.setSelectionMode(<br>              selectionConstants[index]);<br>              }<br>              });<br>              } <br>              private void initializeCombo() {<br>              int mode = <br>              table.getSelectionModel().getSelectionMode();</p>            <p> if(mode == ListSelectionModel.SINGLE_SELECTION) { <br>              combo.setSelectedIndex(0);<br>              }<br>              else if(mode == <br>              ListSelectionModel.SINGLE_INTERVAL_SELECTION) {<br>              combo.setSelectedIndex(1);<br>              }<br>              else if(mode == <br>              ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) {<br>              combo.setSelectedIndex(2);<br>              }<br>              }<br>              }<br>              public static void main(String args[]) {<br>              GraphicJavaApplication.launch(<br>              new Test(),&quot;JTable Selection Modes&quot;,300,300,450,300);<br>              }<br>              }<br>              class GraphicJavaApplication 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 align="center">&nbsp; </p>            <p> 19.6 绘制和编辑</p>            <p>&nbsp;</p>            <p align="center">&nbsp; </p>            <p> 19.6.1 使用表格单绘制器和编辑器</p>            <p>&nbsp;</p>            <p align="center"><b>例19-11 StereoDeckModel类</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import javax.swing.table.*;            <p>class StereoDeckModel extends AbstractTableModel {<br>              String[] columnNames = {<br>              &quot;In Use&quot;, &quot;Manufacturer&quot;, &quot;Model&quot;,               &quot;Price&quot;, &quot;Dolby&quot;,<br>              &quot;Bass&quot;, &quot;Volume&quot;<br>              };<br>              Object[][] data = {<br>              { Boolean.FALSE, &quot;Sony&quot;, &quot;1501A&quot;, <br>              new Double(129.99), Boolean.TRUE,<br>              Boolean.TRUE, new Integer(50) }, </p>            <p> { Boolean.FALSE, &quot;Phillips&quot;, &quot;86A4&quot;, <br>              new Double(159.99), Boolean.TRUE,<br>              Boolean.FALSE, new Integer(35) }, </p>            <p> { Boolean.TRUE, &quot;Kenwood&quot;, &quot;33-801-A&quot;, <br>              new Double(199.99), Boolean.FALSE,<br>              Boolean.TRUE, new Integer(77) }, </p>            <p> { Boolean.FALSE, &quot;Blaupunkt&quot;, &quot;7622A&quot;, <br>              new Double(229.99), Boolean.TRUE,<br>              Boolean.FALSE, new Integer(19) }, </p>            <p> { Boolean.FALSE, &quot;Akai&quot;, &quot;9733&quot;, <br>              new Double(259.99), Boolean.TRUE,<br>              Boolean.FALSE, new Integer(68) }, </p>            <p> { Boolean.FALSE, &quot;Sony&quot;, &quot;1520B&quot;, <br>              new Double(349.99), Boolean.FALSE,<br>              Boolean.FALSE, new Integer(94) }, </p>            <p> { Boolean.FALSE, &quot;Kenwood&quot;, &quot;2289B&quot;, <br>              new Double(499.99), Boolean.FALSE,<br>              Boolean.FALSE, new Integer(44) }, <br>              };<br>              public Object getValueAt(int row, int col) {<br>              return data[row][col];<br>              }<br>              public int getRowCount() { <br>              return data.length; <br>              }<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -