如何在 Java Swing 中僅當更改任何一列的寬度時,將調整應用到 JTable 的最後一列?
若僅對最後一列應用調整,請使用 setAutoResizeMode 並設定模式。此處的模式應為 AUTO_RESIZE_LAST_COLUMN。這將允許你僅調整最後一列,即使任何一個列標題被拖動來調整大小。
我們首先來看一個在 Java 中建立表的示例 −
示例
package my;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class SwingDemo {
public static void main(String[] argv) throws Exception {
DefaultTableModel tableModel = new DefaultTableModel();
JTable table = new JTable(tableModel);
tableModel.addColumn("Technology");
tableModel.addColumn("BCA");
tableModel.addColumn("MCA");
tableModel.addColumn("Lectures");
// applying adjustments to the last column only
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
tableModel.addRow(new Object[] { "F#", "Yes", "No", "20"});
tableModel.addRow(new Object[] { "Blockchain", "Yes", "No", "30"});
tableModel.addRow(new Object[] { "SharePoint", "Yes", "Yes", "25"});
tableModel.addRow(new Object[] { "AWS", "No", "Yes", "25"});
tableModel.addRow(new Object[] { "Python", "Yes", "No", "20"});
tableModel.addRow(new Object[] { "Scala", "Yes", "No", "30"});
tableModel.addRow(new Object[] { "Swift", "No", "Yes", "35"});
tableModel.addRow(new Object[] { "C#", "Yes", "Yes", "50"});
tableModel.addRow(new Object[] { "NodeJS", "No", "Yes", "40"});
tableModel.addRow(new Object[] { "MVC", "Yes", "No", "30"});
tableModel.addRow(new Object[] { "ASP.NET", "Yes", "Yes", "35"});
tableModel.addRow(new Object[] { "Java", "Yes", "No", "55"});
tableModel.addRow(new Object[] { "jQuery", "Yes", "Yes", "30"});
Font font = new Font("Verdana", Font.PLAIN, 12);
table.setFont(font);
JFrame frame = new JFrame();
frame.setSize(600, 400);
frame.add(new JScrollPane(table));
frame.setVisible(true);
}
}輸出

現在,如果你調整其中任何一列的大小(我們在此調整技術列的大小),那麼所有調整都會影響該列本身以及僅最後一列。其他兩列(BCA 和 MCA)將保持不變 −

廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP