volumeeditor.java
来自「java swing 开发代码」· Java 代码 · 共 127 行
JAVA
127 行
// VolumeEditor.java// A slider Editor for volume values in a table.//package jswing.ch16;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.table.*;import javax.swing.event.*;public class VolumeEditor extends JSlider implements TableCellEditor { public OkCancel helper = new OkCancel(); protected transient Vector listeners; protected transient int originalValue; protected transient boolean editing; public VolumeEditor() { super(SwingConstants.HORIZONTAL); listeners = new Vector(); } // Inner class for the ok/cancel popup window that displays below the // active scrollbar. It's position will have to be determined by the // editor when getTableCellEditorComponent() is called. public class OkCancel extends JWindow { private JButton okB = new JButton(new ImageIcon("accept.gif")); private JButton cancelB = new JButton(new ImageIcon("decline.gif")); private int w = 50; private int h = 24; public OkCancel() { setSize(w,h); setBackground(Color.yellow); JPanel p = new JPanel(new GridLayout(0,2)); //p.setBorder(BorderFactory.createLineBorder(Color.gray)); //okB.setBorder(null); //cancelB.setBorder(null); p.add(okB); p.add(cancelB); setContentPane(p); okB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { stopCellEditing(); } }); cancelB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { cancelCellEditing(); } }); } } public Component getTableCellEditorComponent(JTable table,Object value, boolean isSelected, int row,int column) { if (value == null) { return this; } if (value instanceof Volume) { setValue(((Volume)value).getVolume()); } else { setValue(0); } table.setRowSelectionInterval(row, row); table.setColumnSelectionInterval(column, column); originalValue = getValue(); editing = true; Point p = table.getLocationOnScreen(); Rectangle r = table.getCellRect(row, column, true); helper.setLocation(r.x + p.x + getWidth() - 50, r.y + p.y + getHeight()); helper.setVisible(true); return this; } // CellEditor methods public void cancelCellEditing() { fireEditingCanceled(); editing = false; helper.setVisible(false); } public Object getCellEditorValue() {return new Integer(getValue());} public boolean isCellEditable(EventObject eo) {return true;} public boolean shouldSelectCell(EventObject eo) { return true; } public boolean stopCellEditing() { fireEditingStopped(); editing = false; helper.setVisible(false); return true; } public void addCellEditorListener(CellEditorListener cel) { listeners.addElement(cel); } public void removeCellEditorListener(CellEditorListener cel) { listeners.removeElement(cel); } protected void fireEditingCanceled() { setValue(originalValue); ChangeEvent ce = new ChangeEvent(this); for (int i = listeners.size() - 1; i >= 0; i--) { ((CellEditorListener)listeners.elementAt(i)).editingCanceled(ce); } } protected void fireEditingStopped() { ChangeEvent ce = new ChangeEvent(this); for (int i = listeners.size() - 1; i >= 0; i--) { ((CellEditorListener)listeners.elementAt(i)).editingStopped(ce); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?