简体   繁体   English

将JButton添加到JTable

[英]Adding JButton to the JTable

In swing, is there any possible to add a button on the header of the table. 在挥杆时,是否有可能在表格的标题上添加一个按钮。 Need the swing implementing the above post. 需要摆动实施上述帖子。 Thanks in advance. 提前致谢。

Yes, it is possible. 对的,这是可能的。 You can simply add the button to the table header. 您只需将按钮添加到表头即可。 The only thing to know is that JTableHeader does not have a layout, so you need to set one. 唯一要知道的是JTableHeader没有布局,所以你需要设置一个。

Here is a simple demo code of this: 这是一个简单的演示代码:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

public class TestTable2 {

    protected void initUI() {
        DefaultTableModel model = new DefaultTableModel();
        for (int i = 0; i < 5; i++) {
            model.addColumn("Col-" + (i + 1));
        }
        for (int i = 0; i < 200; i++) {
            Vector<Object> row = new Vector<Object>();
            for (int j = 0; j < 5; j++) {
                row.add("New cell - " + (j + 1));
            }
            model.addRow(row);
        }
        JTable table = new JTable(model);
        final JButton button = new JButton("Click me");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(button, "You have clicked me");
            }
        });
        JTableHeader header = table.getTableHeader();
        header.setLayout(new FlowLayout(FlowLayout.TRAILING, 5, 0));
        header.add(button);
        JFrame frame = new JFrame(TestTable2.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JScrollPane scrollpane = new JScrollPane(table);
        frame.add(scrollpane, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException,
            UnsupportedLookAndFeelException {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new TestTable2().initUI();
            }
        });
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM