2012-12-07 134 views
1

在swing中,是否有可能在表头上添加一个按钮。需要执行上述帖子的摆动。提前致谢。将JButton添加到JTable中

+2

可能的[此]的复制(http://stackoverflow.com/questions/2026965/can-i-add-a-button-to -a-jtable-column-header) –

回答

4

是的,这是可能的。您可以简单地将按钮添加到表头。唯一要知道的是JTableHeader没有布局,所以你需要设置一个。

下面是这种简单的演示代码:

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(); 
      } 
     }); 
    } 

} 
+0

+1无论如何(我的观点)边框/框可能会更好 – mKorbel

+0

+1这个[Q&A](http://stackoverflow.com/q/7137786/230513)包括一个相关的例子,一些有用的警告。 – trashgod

+0

谢谢老兄..我需要一个Jtable在头上添加按钮。当添加点击..然后它必须添加一个包含文本框,标签和删除按钮的行。单击删除按钮时,相应的行应删除..在此先感谢.. – deva