Новичок
Профиль
Группа: Участник
Сообщений: 46
Регистрация: 12.5.2006
Репутация: нет Всего: нет
|
Вот код запустите и сами убедитесь: FloatFilter.java | Код | package HTablePackage;
import javax.swing.text.*; import javax.swing.*; public class FloatFilter extends DocumentFilter { public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attr) throws BadLocationException { StringBuffer sb =new StringBuffer(text); String str,str1,str2; str=fb.getDocument().getText(0,fb.getDocument().getLength()); str2=str; if (offset==str.length()+1)str1=fb.getDocument().getText(0,fb.getDocument().getLength())+text; else{ if(str.substring(0, offset).equals("0")){ super.remove(fb,0,1); str=fb.getDocument().getText(0,fb.getDocument().getLength()); str1 =text+str.substring(0, offset-1)+str.substring(offset-1, str.length()); offset-=offset; } else{ str1 = str.substring(0, offset) + text + str.substring(offset, str.length()); } } if (str.length()==0){ str = sb.substring(0, sb.length()); }else { str=str1; } for (int i=sb.length()-1; i>=0; i--){ char ch = sb.charAt(i); if (!Character.isDigit(ch)) if (ch=='.'){ int p1 =str.indexOf('.'); int p2 =str.lastIndexOf('.'); if (p1!=p2) sb.deleteCharAt(i); } else sb.deleteCharAt(i); } str=sb.toString(); if(str2.equals("0")&&text.equals("."))str=str2+text; super.replace(fb,offset,length,str,attr); str=fb.getDocument().getText(0,fb.getDocument().getLength()); if (str.length()==0){ super.insertString(fb,offset,str2,attr);} }
public void remove (FilterBypass fb, int offset, int length) throws BadLocationException{ String str, str1; str=fb.getDocument().getText(0,fb.getDocument().getLength()); super.remove(fb,offset,length); str1=fb.getDocument().getText(0,fb.getDocument().getLength()); if(str1.equals(".")){ super.remove(fb,0,1); super.insertString(fb,0,"0",null); } if (str1.length()==0)super.insertString(fb,0,"0",null); } }
class FormattedTextFieldVerifier extends InputVerifier{ public boolean verify(JComponent component){ JFormattedTextField field = (JFormattedTextField)component; return field.isEditValid(); } }
|
TableMain.java | Код | package HTablePackage;
import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.table.*; import java.util.*; import javax.swing.text.*; import java.text.*; import javax.swing.event.*; /** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2006</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */ public class TableMain extends JFrame {
ArrayList ALGr1= new ArrayList(); ArrayList ALGrStr = new ArrayList();
JPanel MainPanel = new JPanel(); JFormattedTextField jFTF = new JFormattedTextField( new InternationalFormatter( NumberFormat.getInstance()) { protected DocumentFilter getDocumentFilter(){ return filter; } private DocumentFilter filter = new FloatFilter(); });
GridBagLayout gridBagLayout1 = new GridBagLayout(); private Object [] zVtv = {"Объем памяти", "tвып.","Объем памяти", "tвып.","Объем памяти", "tвып.","Объем памяти", "tвып.","Объем памяти", "tвып."}; private Object [][] nVtv ={{new Double(10),new Double(5), new Double(20),new Double(3), new Double(40.2),new Double(2),new Double(15),new Double(25),new Double(23),new Double(21)}, {new Double(12d),new Double(35), new Double(27),new Double(13.987),new Double(29), new Double(4d),new Double(22),new Double(17),new Double(5),new Double(24)}, {new Double(51d),new Double(25), new Double(23),new Double(13), new Double(21), new Double(46d),new Double(25d),new Double(20),new Double(21),new Double(29)}, {new Double(12d),new Double(10d), new Double(28),new Double(6), new Double(21), new Double(35d),new Double(1d),new Double(24),new Double(19),new Double(20)} }; private String [] ZVtv ={"Центр управления №1","Центр управления №2","Центр управления №3","Центр управления №4"};
DefaultTableModel dtm= new DefaultTableModel(nVtv,zVtv); String [] gzaglVtv ={"Задание №1","Задание №2","Задание №3","Задание №4","Задание №5"};
JTable jTabVtv; JScrollPane jScrollPane1; JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JPanel jPanel1 = new JPanel(); BorderLayout borderLayout1 = new BorderLayout();
public TableMain() { try { jbInit(); } catch (Exception ex) { ex.printStackTrace(); }
}
public static void main(String [] args){ TableMain MT = new TableMain(); MT.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); MT.setVisible(true);
}
private void jbInit() throws Exception { setSize(new Dimension(600,300)); setTitle("Иерархическая таблица"); MainPanel.setLayout(gridBagLayout1); jButton1.setText("ДОБАВИТЬ"); jButton1.addActionListener(new TableMain_jButton1_actionAdapter(this)); jButton1.setMaximumSize(new Dimension(100, 25)); jButton1.setMinimumSize(new Dimension(100, 25)); jButton1.setPreferredSize(new Dimension(100, 25)); jButton2.setMaximumSize(new Dimension(100, 25)); jButton2.setMinimumSize(new Dimension(100, 25)); jButton2.setPreferredSize(new Dimension(100, 25)); jButton2.setText("УДАЛИТЬ"); jButton2.addActionListener(new TableMain_jButton2_actionAdapter(this)); jPanel1.setLayout(borderLayout1); getContentPane().add(MainPanel); InitialTable();
}
public void InitialTable(){ jTabVtv= new JTable(dtm); TableColumnModel columnModel=jTabVtv.getColumnModel(); jTabVtv.setTableHeader(new GroupableTableHeader(columnModel)); jTabVtv.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jScrollPane1 = new JScrollPane(jTabVtv); jPanel1.add(jScrollPane1, java.awt.BorderLayout.SOUTH); MainPanel.add(jPanel1, new GridBagConstraints(0, 0, 1, 5, 1.0, 1.0 , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0)); MainPanel.add(jButton1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 0, 0)); MainPanel.add(jButton2, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 2, 2, 2), 0, 0)); jPanel1.add(jScrollPane1); // jScrollPane1.getViewport().add(jTabVtv); jTabVtv.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jTabVtv.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jTabVtv.getSelectionModel().setSelectionInterval(0,0);
int s2=100; for (int j = 0; j < jTabVtv.getColumnCount(); j++) { TableColumnModel CM_T8 = jTabVtv.getColumnModel(); TableColumn ChCol8 = CM_T8.getColumn(j); if (j%2==0){ ChCol8.setMaxWidth(s2+100); ChCol8.setMinWidth(s2); ChCol8.setPreferredWidth(s2); } ChCol8.setCellEditor(new DefaultCellEditor(jFTF)); } jTabVtv.repaint(); }
public void jButton1_actionPerformed(ActionEvent e) { }
public void jButton2_actionPerformed(ActionEvent e) { } }
class TableMain_jButton2_actionAdapter implements ActionListener { private TableMain adaptee; TableMain_jButton2_actionAdapter(TableMain adaptee) { this.adaptee = adaptee; }
public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } }
class TableMain_jButton1_actionAdapter implements ActionListener { private TableMain adaptee; TableMain_jButton1_actionAdapter(TableMain adaptee) { this.adaptee = adaptee; }
public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } }
|
Какое событие необходимо перехватывать чтобы при нажатии кнопки не отсекалась дробная часть?
|