Search...
FAQs
Subscribe
Pie
FAQs
Recent topics
Flagged topics
Hot topics
Best topics
Search...
Search Coderanch
Advance search
Google search
Register / Login
Cookie Wong
Greenhorn
+ Follow
1
Posts
1
Threads
0
Cows
since Apr 22, 2011
Merit Badge info
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
0
Received in last 30 days
0
Total given
0
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
Ranch Hand Scavenger Hunt
Number Posts (1/100)
Number Threads Started (1/100)
Number Cows Received (0/5)
Number Likes Received (0/10)
Number Likes Granted (0/20)
Set bumper stickers in profile (0/3)
Report a post to the moderators (0/1)
Edit a wiki page (0/1)
Create a post with an image (0/2)
Greenhorn Scavenger Hunt
First Post
Number Posts (1/10)
Number Threads Started (1/10)
Number Likes Received (0/3)
Number Likes Granted (0/3)
Set bumper stickers in profile (0/1)
Set signature in profile
Search for a post/thread (0/3)
Set a watch on a thread
Save thread as a bookmark
Create a post with an image (0/1)
Recent posts by Cookie Wong
Cannot click the JButton in Jtable
Hi all,
I cannot click the connect button in JTable. Anyone can tell me why? Many thanks.
import java.awt.*; import java.awt.event.*; import java.util.EventObject; import javax.swing.*; import javax.swing.table.*; public class TableButton implements ActionListener { public JFrame GUIMainFrame = new JFrame(""); JTable table; public void actionPerformed(ActionEvent e) { JButton editorButton = (JButton)e.getSource(); String ac = editorButton.getActionCommand(); System.out.println("ac = " + ac); } private JScrollPane getContent() { table = new JTable(getModel()); table.setCellSelectionEnabled(true); int height = (new JButton(" ")).getPreferredSize().height; table.setRowHeight(height); TableColumnModel colModel = table.getColumnModel(); colModel.getColumn(0).setCellRenderer(new ButtonRenderer()); colModel.getColumn(0).setCellEditor(new ButtonEditor(this)); return new JScrollPane(table); } private AbstractTableModel getModel() { return new AbstractTableModel() { private String[] columnNames = {"Action","I/O","Device"}; private Object[][] data = { {"Connect", "Input", "1"}, {"Connect", "Input", "2"}}; public int getColumnCount() { return columnNames.length; } public int getRowCount() { return data.length; } public boolean isCellEditable(int row, int col) { if (col < 2) { return false; } else { return true; } } public void setValueAt(Object value, int row, int col) { data[row][col] = value; fireTableCellUpdated(row, col); } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { return data[row][col]; } public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } }; } private JPanel getLastPanel() { JToggleButton toggle = new JToggleButton("Disable Buttons"); toggle.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JToggleButton tb = (JToggleButton)e.getSource(); TableColumn col= table.getColumnModel().getColumn(0); ButtonRenderer renderer = (ButtonRenderer)col.getCellRenderer(); ButtonEditor editor = (ButtonEditor)col.getCellEditor(); boolean enable; if(tb.isSelected()) { enable = false; tb.setText("Enable Buttons"); } else { enable = true; tb.setText("Disable Buttons"); } renderer.setEnabled(enable); editor.setEnabled(enable); table.repaint(); } }); JPanel panel = new JPanel(); panel.add(toggle); return panel; } public static void main(String[] args) { TableButton GUI = new TableButton(); JFrame GUIMainFrame = new JFrame(); GUIMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GUIMainFrame.getContentPane().add(GUI.getContent()); GUIMainFrame.getContentPane().add(GUI.getLastPanel(), "Last"); GUIMainFrame.setSize(600, 550); GUIMainFrame.setLocation(300,100); GUIMainFrame.setVisible(true); } class ButtonRenderer implements TableCellRenderer { JButton button; boolean enabled = true; public ButtonRenderer() { button = new JButton(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { String text = (String)value; button.setText(text); button.setEnabled(enabled); return button; } public void setEnabled(boolean enabled) { this.enabled = enabled; } } class ButtonEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { JButton button; boolean enabled = true; int clickCountToStart = 1; public ButtonEditor(ActionListener al) { button = new JButton(); button.addActionListener(this); button.addActionListener(al); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { String text = (String)value; button.setText(text); button.setActionCommand(text); button.setEnabled(enabled); return button; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public Object getCellEditorValue() { return button.getText(); } public boolean isCellEditable(EventObject anEvent) { if (anEvent instanceof MouseEvent) { return ((MouseEvent)anEvent).getClickCount() >= clickCountToStart; } return true; } public void actionPerformed(ActionEvent e) { super.stopCellEditing(); } } }
show more
11 years ago
Swing / AWT / SWT