Java Swing table清單增加操作按鈕
- 我要的最終效果
- 開始表演
- 建構我要顯示的view
我要的最終效果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zZihGbXpVbk1mYwhnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1IDN1ETO1UTMwETOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
網上關于Swing的資料還是相對比較少的。關于在清單後面添加操作按鈕,我更是找了好久都沒有找到。
開始表演
實作TableCellRenderer接口
/**
* @author FeianLing
* @date 2019/9/10
*/
public class MyButtonRender implements TableCellRenderer {
private JPanel jPanel;
private JButton jButton;
public MyButtonRender() {
initJPanel();
initButton();
jPanel.add(jButton);
}
private void initButton() {
jButton = new JButton();
jButton.setBounds(2, 3, 80, 30);
jButton.addActionListener(
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("" + e.getActionCommand());
System.out.println(jButton.getText());
}
});
}
private void initJPanel() {
jPanel = new JPanel();
jPanel.setLayout(null);
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
jButton.setText("編輯");
return jPanel;
}
}
建構我要顯示的view
@Data
@Slf4j
public class AutoCaseListV extends JFrame {
private static final long serialVersionUID = -6310560018875149946L;
private Container container = getContentPane();
public AutoCaseListV(String token) {
setTitle("待送件清單");
// 設計窗體大小
setBounds(0, 0, 800, 900);
// 添加一塊桌布
container.setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 初始化視窗
init(token);
// 設計視窗可見
setVisible(true);
}
/**
* @author FeianLing
* @date 2019/9/9
* @desc 待送檢清單資料顯示初始化
* @param
* @return void
*/
private void init(String token) {
String[] cNames = {"案号", "商标名稱", "申請類别", "訂單号", "委托人", "申請人", "操作"};
Object[][] rowData = {
{"2019T-US002413T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 1},
{"2019T-US002414T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 2},
{"2019T-US002415T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 3},
{"2019T-US002416T", " SHAW UROY", "21", "201909097071", "Devi", "Deli", 4},
};
JTable table = new JTable(rowData, cNames);
table.setRowHeight(30);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
table.getColumnModel().getColumn(6).setCellRenderer(new MyButtonRender());
}
}
運作代碼 顯示效果及如開篇所示。
吐槽一下:Swing畫一個GUI界面都這麼複雜,難怪沒人用啊