Created
July 9, 2013 08:21
-
-
Save maryokhin/5955627 to your computer and use it in GitHub Desktop.
bug logging
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main.helper; | |
import main.Criterion; | |
import javax.swing.*; | |
import javax.swing.table.*; | |
import java.awt.*; | |
/** | |
* custom class for criteria table | |
*/ | |
public class CriteriaTable extends JTable { | |
public CriteriaTable(DefaultTableModel tm) { | |
setModel(tm); | |
setDefaultValues(); | |
setRowHeight(20); // height set for spinners in cells | |
setAutoCreateRowSorter(false); | |
getTableHeader().setDefaultRenderer(new HeaderRenderer(this)); | |
} | |
private void setDefaultValues() { | |
final TableColumnModel tcm = getColumnModel(); | |
for (int j = 0; j < getRowCount(); j++) { | |
setValueAt(("Cr." + (j + 1)), j, 0); | |
} | |
for (int i = 1; i < tcm.getColumnCount(); i++) { | |
final TableColumn tc = tcm.getColumn(i); // custom spinner editor to all cells | |
tc.setCellEditor(new SpinnerEditor(this)); | |
for (int j = 0; j < getRowCount(); j++) { | |
setValueAt(SpinnerValue.PLUS, j, i); // filling all cells with starting values | |
} | |
} | |
} | |
public Criterion getCriterionFromRow(int row) { | |
int[] values = new int[getColumnCount() - 1]; | |
for (int i = 0; i < values.length; i++) { | |
values[i] = SpinnerValue.fromString((String) getCellEditor(row, i + 1).getCellEditorValue()); | |
System.out.println("Spinner values:" + values[i]); | |
} | |
return new Criterion(values); | |
} | |
@Override | |
public Component prepareRenderer(final TableCellRenderer renderer, int row, int col) { | |
Component component = super.prepareRenderer(renderer, row, col); | |
if (col == 0) { | |
component = this.getTableHeader().getDefaultRenderer() | |
.getTableCellRendererComponent(this, | |
this.getValueAt(row, col), false, false, row, col); | |
} | |
return component; | |
} | |
private /** | |
* class to draw double headers | |
*/ | |
class HeaderRenderer implements TableCellRenderer { | |
private final TableCellRenderer renderer; | |
public HeaderRenderer(JTable jTable1) { | |
renderer = jTable1.getTableHeader().getDefaultRenderer(); | |
} | |
@Override | |
public Component getTableCellRendererComponent( | |
JTable table, Object value, boolean isSelected, | |
boolean hasFocus, int row, int col) { | |
return renderer.getTableCellRendererComponent( | |
table, value, isSelected, hasFocus, row, col); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment