天天看點

Java Swing table清單增加操作按鈕我要的最終效果開始表演建構我要顯示的view

Java Swing table清單增加操作按鈕

  • 我要的最終效果
  • 開始表演
  • 建構我要顯示的view

我要的最終效果

Java Swing table清單增加操作按鈕我要的最終效果開始表演建構我要顯示的view

網上關于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界面都這麼複雜,難怪沒人用啊

繼續閱讀