public TableCellRenderFrame() { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); TableModel model = new PlanetTableModel(); JTable table = new JTable(model); table.setRowSelectionAllowed(false); // set up renderers and editors table.setDefaultRenderer(Color.class, new ColorTableCellRenderer()); table.setDefaultEditor(Color.class, new ColorTableCellEditor()); JComboBox<Integer> moonCombo = new JComboBox<>(); for (int i = 0; i <= 20; i++) moonCombo.addItem(i); TableColumnModel columnModel = table.getColumnModel(); TableColumn moonColumn = columnModel.getColumn(PlanetTableModel.MOONS_COLUMN); moonColumn.setCellEditor(new DefaultCellEditor(moonCombo)); moonColumn.setHeaderRenderer(table.getDefaultRenderer(ImageIcon.class)); moonColumn.setHeaderValue(new ImageIcon(getClass().getResource("Moons.gif"))); // show table table.setRowHeight(100); add(new JScrollPane(table), BorderLayout.CENTER); }
/** Create a new, empty property sheet. */ public PropertySheet() { super(new EnhancedTable()); this.getPreferredSize(); props = new ForClassPropertyList(); // Add bean change event listener props.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent e) { // XXX Should I fire a 'stop editing' event here? refresh(); } }); // Add table JTable table = getTable(); MyTableModel tableModel = new MyTableModel(); table.setModel(tableModel); table.setDefaultRenderer(InstancePropertyDescriptor.class, new MyCellRenderer()); table.setDefaultEditor(InstancePropertyDescriptor.class, new MyCellEditor()); }
private void loadView() { // main views mTableModel = new SpreadsheetTableModel(); mTableView = new JTable(mTableModel); mTableView.setRowSelectionAllowed(false); mTableView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); mTableView.setFillsViewportHeight(true); mTableView.setDefaultRenderer(String.class, new ColorCellRenderer(TABLE_CELL_COLOR)); mTableView.setDefaultEditor( String.class, new SpreadsheetCellEditor(mTableView.getDefaultEditor(String.class))); mTableView.getSelectionModel().addListSelectionListener(new SpreadsheetSelectionListener()); mTableView .getColumnModel() .getSelectionModel() .addListSelectionListener(new SpreadsheetSelectionListener()); JTable rowHeaderTable = new JTable(new RowHeaderTableModel()); rowHeaderTable.setCellSelectionEnabled(false); rowHeaderTable.setPreferredScrollableViewportSize(new Dimension(50, Integer.MAX_VALUE)); rowHeaderTable.setDefaultRenderer(Object.class, new ColorCellRenderer(ROW_HEADER_COLOR)); mFormulaTextField = new BindableTextField(); mFormulaTextField.setEditable(false); mFormulaTextField.setFocusable(false); JScrollPane scrollView = new JScrollPane(mTableView); scrollView.setRowHeaderView(rowHeaderTable); add(mFormulaTextField, BorderLayout.BEFORE_FIRST_LINE); add(scrollView, BorderLayout.CENTER); // helpers mFileChooser = new SingleExtensionFileChooser(); String extension = SpreadsheetPersistenceManager.SPREADSHEET_FILE_EXTENSION; mFileChooser.setFileExtension(extension, "Spreadsheets file (." + extension + ")"); }
/** * Constructor initialises the table and a popup tool, as well as initialising the required GUI * elements. It adds action listeners for the three main buttons, which include basic user input * validation checking. */ public TableAttributeEditor(JFrame MyOwner) { // As usual, it is insanely hard to get the swing components to display // and work properly. If JTable is not displayed in a scroll pane no headers are // displayed, and you have to do it manually. (If you *do* display it // in a scrollbar, in this instance, it screws up sizing) // The broken header mis-feature is only mentioned in the tutorial, // not in the api doco - go figure. super(); owner = MyOwner; // final JPanel mainPanel = (JPanel)this; tableData = new AttributeTableModel(); attributeTable = new JTable(tableData); // attributeTable.setRowHeight(20); // This may be needed, depends on how fussy people get about // the bottom of letters like 'y' getting cut off when the cell is selected - bug 3013. popupTableTool = new SmartPopupTableTool(attributeTable, tableData, (JXplorerBrowser) owner); // Set the renderer for the attribute type... final AttributeTypeCellRenderer typeRenderer = new AttributeTypeCellRenderer(); attributeTable.setDefaultRenderer(AttributeNameAndType.class, typeRenderer); // Set the renderer for the attribute value... final AttributeValueCellRenderer valueRenderer = new AttributeValueCellRenderer(); attributeTable.setDefaultRenderer(AttributeValue.class, valueRenderer); // Set the editor for the attribute value... myEditor = new AttributeValueCellEditor(owner); attributeTable.setDefaultEditor(AttributeValue.class, myEditor); attributeTable.getTableHeader().setReorderingAllowed(false); currentDN = null; JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); buttonPanel.add( submit = new CBButton( CBIntText.get("Submit"), CBIntText.get("Submit your changes to the Directory."))); buttonPanel.add( reset = new CBButton( CBIntText.get("Reset"), CBIntText.get("Reset this entry i.e. cancels any changes."))); buttonPanel.add( changeClass = new CBButton( CBIntText.get("Change Classes"), CBIntText.get("Change the Object Class of this entry."))); buttonPanel.add( opAttrs = new CBButton( CBIntText.get("Properties"), CBIntText.get("View the Operational Attributes of this entry."))); // I don't really understand why we have to do this... // but without it these buttons over ride the default // button (Search Bar's search button), if they have // been clicked and the user hits the enter key? opAttrs.setDefaultCapable(false); submit.setDefaultCapable(false); reset.setDefaultCapable(false); changeClass.setDefaultCapable(false); setLayout(new BorderLayout(10, 10)); tableScroller = new JScrollPane(); attributeTable.setBackground(Color.white); tableScroller.setPreferredSize(new Dimension(300, 285)); tableScroller.setViewportView(attributeTable); add(tableScroller, BorderLayout.CENTER); add(buttonPanel, BorderLayout.SOUTH); if ("true".equals(JXConfig.getProperty("lock.read.only"))) title = CBIntText.get("Table Viewer"); else title = CBIntText.get("Table Editor"); setVisible(true); // triggers adding operational attributes of the current entry. opAttrs.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { displayOperationalAttributes(); } }); reset.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { myEditor.stopCellEditing(); // tableData.reset(); displayEntry(originalEntry, dataSource, false); } }); submit.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { doSubmit(); } }); // This allows the user to change the objectclass attribute. // This is pretty tricky, because it changes what attributes are available. changeClass.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { changeClass(); } }); attributeTable.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { if (!doPopupStuff(e)) super.mousePressed(e); } public void mouseReleased(MouseEvent e) { if (!doPopupStuff(e)) super.mouseReleased(e); } // TODO need to have a way to call this from a keystroke... public boolean doPopupStuff(MouseEvent e) { if (e.isPopupTrigger() == false) return false; int row = attributeTable.rowAtPoint(new Point(e.getX(), e.getY())); attributeTable.clearSelection(); attributeTable.addRowSelectionInterval(row, row); attributeTable.repaint(); popupTableTool.registerCurrentRow( (AttributeNameAndType) attributeTable.getValueAt(row, 0), (AttributeValue) attributeTable.getValueAt(row, 1), row, tableData.getRDN()); // active path also set by valueChanged popupTableTool.show(attributeTable, e.getX(), e.getY()); popupTableTool.registerCellEditor(myEditor); // TE: for bug fix 3107. return true; } }); }
public IllListView(FormWindow frm) { setBackground(Color.darkGray); setLayout(new BorderLayout(0, 0)); model = new IllTableModel(); table = new JTable(model); table.setDefaultEditor(Date.class, new DateColumnEditor()); table.setDefaultEditor(Emp.class, new EmpColumnEditor()); table .getColumnModel() .getColumn(2) .setCellEditor(new DefaultCellEditor(new JComboBox(Ill.getTypes()))); table.setRowHeight(table.getRowHeight() + 5); add(new JScrollPane(table), BorderLayout.CENTER); // КНОПКИ JButton btnNew = new JButton("Новый"); JButton btnEdit = new JButton("Изменить"); JButton btnDel = new JButton("Удалить"); JButton btnSave = new JButton("Сохранить"); JButton btnChanges = new JButton("Изменения"); JButton btnRefresh = new JButton("Обновить"); JButton btnExit = new JButton("Выход"); JPanel panelButton = new JPanel(); panelButton.add(btnNew); panelButton.add(btnEdit); panelButton.add(btnDel); panelButton.add(btnSave); panelButton.add(btnChanges); panelButton.add(btnRefresh); panelButton.add(btnExit); add(panelButton, BorderLayout.SOUTH); btnExit.addActionListener(frm); btnChanges.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.printChanges(); } }); btnNew.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.addRow(); } }); btnDel.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.removeRow(table.convertRowIndexToModel(table.getSelectedRow())); } }); btnSave.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { model.saveChanges(); Msg.info(IllListView.this, "Операция выполнена успешно."); } catch (Exception e1) { Msg.error(IllListView.this, "Не удалось сохранить данные!"); } } }); btnRefresh.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { model.refresh(); } }); }