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

📄 s19.htm

📁 提供给JAVA编程者图形界面卷
💻 HTM
📖 第 1 页 / 共 5 页
字号:
              new Boolean(false), new Double(99.99),<br>              new ImageIcon(&quot;sasami.jpg&quot;)},</p>            <p> { &quot;Thomas&quot;, dayOne, dayTwo, <br>              new Boolean(false), new Boolean(true), <br>              new Boolean(true), new Double(79.99),<br>              new ImageIcon(&quot;aeka.jpg&quot;)},<br>              <br>              { &quot;Reed&quot;, dayOne, dayTwo, <br>              new Boolean(true), new Boolean(true), <br>              new Boolean(true), new Double(79.99),<br>              new ImageIcon(&quot;tenchi.jpg&quot;)},</p>            <p> { &quot;Crenshaw&quot;, dayOne, dayTwo, <br>              new Boolean(false), new Boolean(false), <br>              new Boolean(false), new Double(69.99),<br>              new ImageIcon(&quot;washu.jpg&quot;)},</p>            <p> { &quot;Royal&quot;, dayOne, dayTwo, <br>              new Boolean(true), new Boolean(false), <br>              new Boolean(false), new Double(99.99),<br>              new ImageIcon(&quot;sasami.jpg&quot;)},</p>            <p> { &quot;Moore&quot;, dayOne, dayTwo, <br>              new Boolean(false), new Boolean(true), <br>              new Boolean(true), new Double(79.99),<br>              new ImageIcon(&quot;aeka.jpg&quot;)},<br>              };<br>              <br>              JTable table = new JTable(new CustomModel(data, columnNames));<br>              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(), <br>              &quot;A Custom Table Model That Specifies Column Classes&quot;,<br>              300,300,650,182);<br>              }<br>              }<br>              class CustomModel extends DefaultTableModel {<br>              public CustomModel(Object[][] data, Object[] columnNames) {<br>              super(data, columnNames);<br>              }<br>              public Class getColumnClass(int col) {<br>              // dataVector is a protected member of DefaultTableModel<br>              <br>              Vector v = (Vector)dataVector.elementAt(0);<br>              return v.elementAt(col).getClass();<br>              }<br>              public boolean isCellEditable(int row, int col) {<br>              Class columnClass = getColumnClass(col);<br>              return columnClass != ImageIcon.class &amp;&amp; <br>              columnClass != Date.class;<br>              }<br>              }<br>              class GJApp extends WindowAdapter {<br>              static private JPanel statusArea = new JPanel();<br>              static private JLabel status = new JLabel(&quot; &quot;);<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.3 表格列</p>            <p>&nbsp;</p>            <p align="center">&nbsp; </p>            <p> 19.3.1 列调整大小模式</p>            <p>&nbsp;</p>            <p align="center"><b>例19-5 JTable调整大小模式</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.*;<br>            import java.util.*;            <p>public class Test extends JFrame {<br>              Object[] resizeModes = new Object[] {<br>              &quot;JTable.AUTO_RESIZE_OFF&quot;,<br>              &quot;JTable.AUTO_RESIZE_NEXT_COLUMN&quot;,<br>              &quot;JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS&quot;,<br>              &quot;JTable.AUTO_RESIZE_LAST_COLUMN&quot;,<br>              &quot;JTable.AUTO_RESIZE_ALL_COLUMNS&quot;,<br>              };<br>              int[] resizeConstants = {<br>              JTable.AUTO_RESIZE_OFF,<br>              JTable.AUTO_RESIZE_NEXT_COLUMN,<br>              JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS,<br>              JTable.AUTO_RESIZE_LAST_COLUMN,<br>              JTable.AUTO_RESIZE_ALL_COLUMNS,<br>              };<br>              JTable table = new JTable(6,5);</p>            <p> public Test() {<br>              Container contentPane = getContentPane();</p>            <p> contentPane.add(new ControlPanel(), BorderLayout.NORTH);<br>              contentPane.add(new JScrollPane(table), <br>              BorderLayout.CENTER);</p>            <p> }<br>              class ControlPanel extends JPanel {<br>              JComboBox resizeModeCombo = new JComboBox(resizeModes);</p>            <p> public ControlPanel() {<br>              initializeCombo();</p>            <p> setBorder(BorderFactory.createTitledBorder(<br>              &quot;Resize Mode&quot;));</p>            <p> setLayout(new FlowLayout(FlowLayout.LEFT,2,2));<br>              add(resizeModeCombo);</p>            <p> resizeModeCombo.addActionListener(<br>              new ActionListener() {<br>              public void actionPerformed(ActionEvent e) {<br>              int index = <br>              resizeModeCombo.getSelectedIndex();</p>            <p> table.setAutoResizeMode(<br>              resizeConstants[index]);<br>              }<br>              });<br>              }<br>              private void initializeCombo() {<br>              int resizeMode = table.getAutoResizeMode();</p>            <p> if(resizeMode == JTable.AUTO_RESIZE_OFF)<br>              resizeModeCombo.setSelectedIndex(0);<br>              else if(resizeMode == JTable.AUTO_RESIZE_NEXT_COLUMN)<br>              resizeModeCombo.setSelectedIndex(1);<br>              else if(resizeMode == JTable.AUTO_RESIZE_LAST_COLUMN)<br>              resizeModeCombo.setSelectedIndex(2);<br>              else if(resizeMode == JTable.AUTO_RESIZE_ALL_COLUMNS)<br>              resizeModeCombo.setSelectedIndex(3);<br>              else if(<br>              resizeMode == JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS)<br>              resizeModeCombo.setSelectedIndex(4);<br>              }<br>              }<br>              public static void main(String args[]) {<br>              GJApp.launch(<br>              new Test(), &quot;JTable Resize Modes&quot;, 300,300,425,210);<br>              }<br>              }<br>              class GJApp extends WindowAdapter {<br>              static private JPanel statusArea = new JPanel();<br>              static private JLabel status = new JLabel(&quot; &quot;);<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">&nbsp; </p>            <p> 19.3.2 列宽度</p>            <p>&nbsp;</p>            <p align="center"><b>例19-6 指定列宽度</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>              Object[] columnNames = <br>              {&quot;First Name&quot;, &quot;MI&quot;, &quot;Last Name&quot;};</p>            <p> Object[][] names = {<br>              { &quot;Lynn&quot;, &quot;M.&quot;, &quot;Seckinger&quot; },<br>              { &quot;Carol&quot;, &quot;R.&quot;, &quot;Seckinger&quot; },<br>              { &quot;Roy&quot;, &quot;D.&quot;, &quot;Martin&quot; },<br>              { &quot;Bill&quot;, &quot;O.&quot;, &quot;Veryveryveryverylonglastname&quot;               },<br>              { &quot;Richard&quot;, &quot;A.&quot;, &quot;Tattersall&quot; },<br>              { &quot;Philip&quot;, &quot;B.&quot;, &quot;Edwards&quot; },<br>              { &quot;Moore&quot;, &quot;T.&quot;, &quot;Moore&quot; },</p>            <p> // shorten scrollbar grip with these ...<br>              { &quot;Lynn&quot;, &quot;M.&quot;, &quot;Seckinger&quot; },<br>              { &quot;Carol&quot;, &quot;R.&quot;, &quot;Seckinger&quot; },<br>              { &quot;Roy&quot;, &quot;D.&quot;, &quot;Martin&quot; },<br>              { &quot;Bill&quot;, &quot;O.&quot;, &quot;Veryveryveryverylonglastname&quot;               },<br>              { &quot;Richard&quot;, &quot;A.&quot;, &quot;Tattersall&quot; },<br>              { &quot;Philip&quot;, &quot;B.&quot;, &quot;Edwards&quot; },<br>              { &quot;Moore&quot;, &quot;T.&quot;, &quot;Moore&quot; },<br>              };<br>              JTable table = new JTable(names, columnNames);</p>            <p> public Test() {<br>              TableColumn mid = table.getColumn(columnNames[1]);<br>              TableColumn last = table.getColumn(columnNames[2]);</p>            <p> int midWidth = getPreferredWidthForColumn(mid),<br>              lastWidth = getPreferredWidthForColumn(last);</p>            <p> mid.setMinWidth(midWidth);<br>              mid.setMaxWidth(midWidth);</p>            <p> last.setMinWidth(lastWidth);</p>            <p> // sizeColumnsToFit() must be called due to a JTable<br>              // bug ...<br>              table.sizeColumnsToFit(0);</p>            <p> getContentPane().add(new JScrollPane(table), <br>              BorderLayout.CENTER);<br>              }<br>              public int getPreferredWidthForColumn(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>

⌨️ 快捷键说明

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