Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
3e28ab1d
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3e28ab1d
编写于
8月 08, 2008
作者:
E
emcmanus
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
fbcf965a
4303a2c1
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
496 addition
and
240 deletion
+496
-240
make/netbeans/jconsole/build.properties
make/netbeans/jconsole/build.properties
+1
-0
make/netbeans/jconsole/build.xml
make/netbeans/jconsole/build.xml
+7
-6
src/share/classes/sun/tools/jconsole/inspector/TableSorter.java
...are/classes/sun/tools/jconsole/inspector/TableSorter.java
+73
-45
src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java
...lasses/sun/tools/jconsole/inspector/XMBeanAttributes.java
+314
-135
src/share/classes/sun/tools/jconsole/inspector/XPlotter.java
src/share/classes/sun/tools/jconsole/inspector/XPlotter.java
+1
-0
src/share/classes/sun/tools/jconsole/inspector/XSheet.java
src/share/classes/sun/tools/jconsole/inspector/XSheet.java
+58
-36
src/share/classes/sun/tools/jconsole/inspector/XTable.java
src/share/classes/sun/tools/jconsole/inspector/XTable.java
+22
-7
src/share/classes/sun/tools/jconsole/inspector/XTextFieldEditor.java
...lasses/sun/tools/jconsole/inspector/XTextFieldEditor.java
+20
-11
未找到文件。
make/netbeans/jconsole/build.properties
浏览文件 @
3e28ab1d
...
...
@@ -44,3 +44,4 @@ build.jdk.version = 1.7.0
build.release
=
${build.jdk.version}-opensource
build.number
=
b00
jconsole.version
=
${build.release}-${user.name}-${build.number}
jconsole.args
=
-debug
make/netbeans/jconsole/build.xml
浏览文件 @
3e28ab1d
...
...
@@ -30,9 +30,9 @@
-->
<project
name=
"jconsole"
default=
"build"
basedir=
"."
>
<import
file=
"../common/shared.xml"
/>
<target
name=
"-pre-compile"
>
<copy
file=
"${root}/src/share/classes/sun/tools/jconsole/Version-template.java"
...
...
@@ -42,7 +42,7 @@
token=
"@@jconsole_version@@"
value=
"${jconsole.version}"
/>
</target>
<target
name=
"-post-compile"
>
<mkdir
dir=
"${dist.dir}/lib"
/>
<jar
destfile=
"${dist.dir}/lib/jconsole.jar"
...
...
@@ -55,18 +55,19 @@
</fileset>
</jar>
</target>
<target
name=
"run"
depends=
"-init,build"
>
<property
name=
"jvm.args"
value=
""
/>
<java
classname=
"sun.tools.jconsole.JConsole"
fork=
"true"
classpath=
"${classes.dir}:${bootstrap.jdk}/lib/tools.jar"
>
<jvmarg
line=
"${jvm.args}"
/>
<arg
line=
"${jconsole.args}"
/>
</java>
</target>
<target
name=
"clean"
depends=
"-init,shared.clean"
>
<delete
file=
"${dist.dir}/lib/jconsole.jar"
/>
</target>
</project>
src/share/classes/sun/tools/jconsole/inspector/TableSorter.java
浏览文件 @
3e28ab1d
...
...
@@ -25,71 +25,78 @@
package
sun.tools.jconsole.inspector
;
import
java.util.*
;
import
java.awt.event.*
;
import
javax.swing.table.*
;
import
javax.swing.event.*
;
// Imports for picking up mouse events from the JTable.
import
java.awt.event.MouseAdapter
;
import
java.awt.event.MouseEvent
;
import
java.awt.event.InputEvent
;
import
java.awt.event.MouseListener
;
import
java.util.Vector
;
import
javax.swing.JTable
;
import
javax.swing.event.TableModelEvent
;
import
javax.swing.event.TableModelListener
;
import
javax.swing.table.DefaultTableModel
;
import
javax.swing.table.JTableHeader
;
import
javax.swing.table.TableColumnModel
;
import
sun.tools.jconsole.JConsole
;
@SuppressWarnings
(
"serial"
)
public
class
TableSorter
extends
DefaultTableModel
implements
MouseListener
{
private
boolean
ascending
=
true
;
private
TableColumnModel
columnModel
;
private
JTable
tableView
;
private
Vector
<
TableModelListener
>
l
istenerList
;
private
Vector
<
TableModelListener
>
evtL
istenerList
;
private
int
sortColumn
=
0
;
private
int
[]
invertedIndex
;
public
TableSorter
()
{
super
();
l
istenerList
=
new
Vector
<
TableModelListener
>();
evtL
istenerList
=
new
Vector
<
TableModelListener
>();
}
public
TableSorter
(
Object
[]
columnNames
,
int
numRows
)
{
super
(
columnNames
,
numRows
);
l
istenerList
=
new
Vector
<
TableModelListener
>();
evtL
istenerList
=
new
Vector
<
TableModelListener
>();
}
@Override
public
void
newDataAvailable
(
TableModelEvent
e
)
{
super
.
newDataAvailable
(
e
);
invertedIndex
=
new
int
[
getRowCount
()];
for
(
int
i
=
0
;
i
<
invertedIndex
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
invertedIndex
.
length
;
i
++)
{
invertedIndex
[
i
]
=
i
;
}
sort
(
this
.
sortColumn
);
sort
(
this
.
sortColumn
,
this
.
ascending
);
}
@Override
public
void
addTableModelListener
(
TableModelListener
l
)
{
l
istenerList
.
add
(
l
);
evtL
istenerList
.
add
(
l
);
super
.
addTableModelListener
(
l
);
}
@Override
public
void
removeTableModelListener
(
TableModelListener
l
)
{
l
istenerList
.
remove
(
l
);
evtL
istenerList
.
remove
(
l
);
super
.
removeTableModelListener
(
l
);
}
private
void
removeListeners
()
{
for
(
TableModelListener
tnl
:
l
istenerList
)
for
(
TableModelListener
tnl
:
evtL
istenerList
)
super
.
removeTableModelListener
(
tnl
);
}
private
void
restoreListeners
()
{
for
(
TableModelListener
tnl
:
l
istenerList
)
for
(
TableModelListener
tnl
:
evtL
istenerList
)
super
.
addTableModelListener
(
tnl
);
}
@SuppressWarnings
(
"unchecked"
)
public
int
compare
(
Object
o1
,
Object
o2
)
{
private
int
compare
(
Object
o1
,
Object
o2
)
{
// take care of the case where both o1 & o2 are null. Needed to keep
// the method symetric. Without this quickSort gives surprising results.
if
(
o1
==
o2
)
return
0
;
if
(
o1
==
null
)
return
1
;
if
(
o2
==
null
)
...
...
@@ -104,18 +111,40 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
}
}
public
void
sort
(
int
column
)
{
private
void
sort
(
int
column
,
boolean
isAscending
)
{
final
XMBeanAttributes
attrs
=
(
tableView
instanceof
XMBeanAttributes
)
?(
XMBeanAttributes
)
tableView
:
null
;
// We cannot sort rows when a cell is being
// edited - so we're going to cancel cell editing here if needed.
// This might happen when the user is editing a row, and clicks on
// another row without validating. In that case there are two events
// that compete: one is the validation of the value that was previously
// edited, the other is the mouse click that opens the new editor.
//
// When we reach here the previous value is already validated, and the
// old editor is closed, but the new editor might have opened.
// It's this new editor that wil be cancelled here, if needed.
//
if
(
attrs
!=
null
&&
attrs
.
isEditing
())
attrs
.
cancelCellEditing
();
// remove registered listeners
removeListeners
();
// do the sort
//n2sort(column);
quickSort
(
0
,
getRowCount
()-
1
,
column
);
if
(
JConsole
.
isDebug
())
{
System
.
err
.
println
(
"sorting table against column="
+
column
+
" ascending="
+
isAscending
);
}
quickSort
(
0
,
getRowCount
()-
1
,
column
,
isAscending
);
// restore registered listeners
restoreListeners
();
this
.
sortColumn
=
column
;
// update row heights in XMBeanAttributes (required by expandable cells)
if
(
tableView
instanceof
XMBeanAttributes
)
{
XMBeanAttributes
attrs
=
(
XMBeanAttributes
)
tableView
;
if
(
attrs
!=
null
)
{
for
(
int
i
=
0
;
i
<
getRowCount
();
i
++)
{
Vector
data
=
(
Vector
)
dataVector
.
elementAt
(
i
);
attrs
.
updateRowHeight
(
data
.
elementAt
(
1
),
i
);
...
...
@@ -123,21 +152,21 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
}
}
private
synchronized
boolean
compareS
(
Object
s1
,
Object
s2
)
{
if
(
a
scending
)
private
boolean
compareS
(
Object
s1
,
Object
s2
,
boolean
isAscending
)
{
if
(
isA
scending
)
return
(
compare
(
s1
,
s2
)
>
0
);
else
return
(
compare
(
s1
,
s2
)
<
0
);
}
private
synchronized
boolean
compareG
(
Object
s1
,
Object
s2
)
{
if
(
a
scending
)
private
boolean
compareG
(
Object
s1
,
Object
s2
,
boolean
isAscending
)
{
if
(
isA
scending
)
return
(
compare
(
s1
,
s2
)
<
0
);
else
return
(
compare
(
s1
,
s2
)
>
0
);
}
private
synchronized
void
quickSort
(
int
lo0
,
int
hi0
,
int
key
)
{
private
void
quickSort
(
int
lo0
,
int
hi0
,
int
key
,
boolean
isAscending
)
{
int
lo
=
lo0
;
int
hi
=
hi0
;
Object
mid
;
...
...
@@ -153,14 +182,14 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
* from the left Index.
*/
while
(
(
lo
<
hi0
)
&&
(
compareS
(
mid
,
getValueAt
(
lo
,
key
))
))
(
compareS
(
mid
,
getValueAt
(
lo
,
key
)
,
isAscending
)
))
++
lo
;
/* find an element that is smaller than or equal to
* the partition element starting from the right Index.
*/
while
(
(
hi
>
lo0
)
&&
(
compareG
(
mid
,
getValueAt
(
hi
,
key
))
))
(
compareG
(
mid
,
getValueAt
(
hi
,
key
)
,
isAscending
)
))
--
hi
;
// if the indexes have not crossed, swap
...
...
@@ -177,27 +206,17 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
* must now sort the left partition.
*/
if
(
lo0
<
hi
)
quickSort
(
lo0
,
hi
,
key
);
quickSort
(
lo0
,
hi
,
key
,
isAscending
);
/* If the left index has not reached the right
* side of array
* must now sort the right partition.
*/
if
(
lo
<=
hi0
)
quickSort
(
lo
,
hi0
,
key
);
quickSort
(
lo
,
hi0
,
key
,
isAscending
);
}
}
public
void
n2sort
(
int
column
)
{
for
(
int
i
=
0
;
i
<
getRowCount
();
i
++)
{
for
(
int
j
=
i
+
1
;
j
<
getRowCount
();
j
++)
{
if
(
compare
(
getValueAt
(
i
,
column
),
getValueAt
(
j
,
column
))
==
-
1
)
{
swap
(
i
,
j
,
column
);
}
}
}
}
private
Vector
getRow
(
int
row
)
{
return
(
Vector
)
dataVector
.
elementAt
(
row
);
}
...
...
@@ -207,7 +226,7 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
dataVector
.
setElementAt
(
data
,
row
);
}
p
ublic
void
swap
(
int
i
,
int
j
,
int
column
)
{
p
rivate
void
swap
(
int
i
,
int
j
,
int
column
)
{
Vector
data
=
getRow
(
i
);
setRow
(
getRow
(
j
),
i
);
setRow
(
data
,
j
);
...
...
@@ -223,11 +242,12 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
public
void
sortByColumn
(
int
column
,
boolean
ascending
)
{
this
.
ascending
=
ascending
;
sort
(
column
);
this
.
sortColumn
=
column
;
sort
(
column
,
ascending
);
}
public
int
[]
getInvertedIndex
(
)
{
return
invertedIndex
;
public
int
getIndexOfRow
(
int
row
)
{
return
invertedIndex
[
row
]
;
}
// Add a mouse listener to the Table to trigger a table sort
...
...
@@ -243,6 +263,14 @@ public class TableSorter extends DefaultTableModel implements MouseListener {
int
viewColumn
=
columnModel
.
getColumnIndexAtX
(
e
.
getX
());
int
column
=
tableView
.
convertColumnIndexToModel
(
viewColumn
);
if
(
e
.
getClickCount
()
==
1
&&
column
!=
-
1
)
{
if
(
tableView
instanceof
XTable
)
{
XTable
attrs
=
(
XTable
)
tableView
;
// inform the table view that the rows are going to be sorted
// against the values in a given column. This gives the
// chance to the table view to close its editor - if needed.
//
attrs
.
sortRequested
(
column
);
}
tableView
.
invalidate
();
sortByColumn
(
column
);
tableView
.
validate
();
...
...
src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java
浏览文件 @
3e28ab1d
此差异已折叠。
点击以展开。
src/share/classes/sun/tools/jconsole/inspector/XPlotter.java
浏览文件 @
3e28ab1d
...
...
@@ -37,6 +37,7 @@ public class XPlotter extends Plotter {
super
(
unit
);
this
.
table
=
table
;
}
@Override
public
void
addValues
(
long
time
,
long
...
values
)
{
super
.
addValues
(
time
,
values
);
table
.
repaint
();
...
...
src/share/classes/sun/tools/jconsole/inspector/XSheet.java
浏览文件 @
3e28ab1d
...
...
@@ -25,18 +25,39 @@
package
sun.tools.jconsole.inspector
;
import
java.awt.*
;
import
java.awt.event.*
;
import
java.io.*
;
import
javax.management.*
;
import
javax.swing.*
;
import
javax.swing.border.*
;
import
javax.swing.tree.*
;
import
java.awt.BorderLayout
;
import
java.awt.Color
;
import
java.awt.Component
;
import
java.awt.Dimension
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
import
java.io.IOException
;
import
javax.management.IntrospectionException
;
import
javax.management.NotificationListener
;
import
javax.management.MBeanInfo
;
import
javax.management.InstanceNotFoundException
;
import
javax.management.ReflectionException
;
import
javax.management.MBeanAttributeInfo
;
import
javax.management.MBeanOperationInfo
;
import
javax.management.MBeanNotificationInfo
;
import
javax.management.Notification
;
import
javax.swing.BorderFactory
;
import
javax.swing.JButton
;
import
javax.swing.JOptionPane
;
import
javax.swing.JPanel
;
import
javax.swing.JScrollPane
;
import
javax.swing.JTextArea
;
import
javax.swing.SwingWorker
;
import
javax.swing.border.LineBorder
;
import
javax.swing.tree.DefaultMutableTreeNode
;
import
javax.swing.tree.DefaultTreeModel
;
import
sun.tools.jconsole.*
;
import
sun.tools.jconsole.inspector.XNodeInfo.Type
;
import
static
sun
.
tools
.
jconsole
.
Resources
.*;
import
static
sun
.
tools
.
jconsole
.
Utilities
.*;
@SuppressWarnings
(
"serial"
)
public
class
XSheet
extends
JPanel
...
...
@@ -344,34 +365,41 @@ public class XSheet extends JPanel
return
;
}
mbean
=
(
XMBean
)
uo
.
getData
();
SwingWorker
<
Void
,
Void
>
sw
=
new
SwingWorker
<
Void
,
Void
>()
{
final
XMBean
xmb
=
mbean
;
SwingWorker
<
MBeanInfo
,
Void
>
sw
=
new
SwingWorker
<
MBeanInfo
,
Void
>()
{
@Override
public
Void
doInBackground
()
throws
InstanceNotFoundException
,
public
MBeanInfo
doInBackground
()
throws
InstanceNotFoundException
,
IntrospectionException
,
ReflectionException
,
IOException
{
mbeanAttributes
.
loadAttributes
(
mbean
,
mbean
.
getMBeanInfo
()
);
return
null
;
MBeanInfo
mbi
=
xmb
.
getMBeanInfo
(
);
return
mbi
;
}
@Override
protected
void
done
()
{
try
{
get
();
if
(!
isSelectedNode
(
node
,
currentNode
))
{
return
;
MBeanInfo
mbi
=
get
();
if
(
mbi
!=
null
&&
mbi
.
getAttributes
()
!=
null
&&
mbi
.
getAttributes
().
length
>
0
)
{
mbeanAttributes
.
loadAttributes
(
xmb
,
mbi
);
if
(!
isSelectedNode
(
node
,
currentNode
))
{
return
;
}
invalidate
();
mainPanel
.
removeAll
();
JPanel
borderPanel
=
new
JPanel
(
new
BorderLayout
());
borderPanel
.
setBorder
(
BorderFactory
.
createTitledBorder
(
Resources
.
getText
(
"Attribute values"
)));
borderPanel
.
add
(
new
JScrollPane
(
mbeanAttributes
));
mainPanel
.
add
(
borderPanel
,
BorderLayout
.
CENTER
);
// add the refresh button to the south panel
southPanel
.
removeAll
();
southPanel
.
add
(
refreshButton
,
BorderLayout
.
SOUTH
);
southPanel
.
setVisible
(
true
);
refreshButton
.
setEnabled
(
true
);
validate
();
repaint
();
}
invalidate
();
mainPanel
.
removeAll
();
JPanel
borderPanel
=
new
JPanel
(
new
BorderLayout
());
borderPanel
.
setBorder
(
BorderFactory
.
createTitledBorder
(
Resources
.
getText
(
"Attribute values"
)));
borderPanel
.
add
(
new
JScrollPane
(
mbeanAttributes
));
mainPanel
.
add
(
borderPanel
,
BorderLayout
.
CENTER
);
// add the refresh button to the south panel
southPanel
.
removeAll
();
southPanel
.
add
(
refreshButton
,
BorderLayout
.
SOUTH
);
southPanel
.
setVisible
(
true
);
refreshButton
.
setEnabled
(
true
);
validate
();
repaint
();
}
catch
(
Exception
e
)
{
Throwable
t
=
Utils
.
getActualException
(
e
);
if
(
JConsole
.
isDebug
())
{
...
...
@@ -704,13 +732,7 @@ public class XSheet extends JPanel
JButton
button
=
(
JButton
)
e
.
getSource
();
// Refresh button
if
(
button
==
refreshButton
)
{
new
SwingWorker
<
Void
,
Void
>()
{
@Override
public
Void
doInBackground
()
{
refreshAttributes
();
return
null
;
}
}.
execute
();
refreshAttributes
();
return
;
}
// Clear button
...
...
src/share/classes/sun/tools/jconsole/inspector/XTable.java
浏览文件 @
3e28ab1d
...
...
@@ -25,10 +25,13 @@
package
sun.tools.jconsole.inspector
;
import
javax.swing.*
;
import
javax.swing.table.*
;
import
java.awt.*
;
import
java.io.*
;
import
java.awt.Color
;
import
java.awt.Component
;
import
java.awt.Font
;
import
javax.swing.JTable
;
import
javax.swing.table.DefaultTableCellRenderer
;
import
javax.swing.table.DefaultTableModel
;
import
javax.swing.table.TableCellRenderer
;
public
abstract
class
XTable
extends
JTable
{
static
final
int
NAME_COLUMN
=
0
;
...
...
@@ -38,8 +41,9 @@ public abstract class XTable extends JTable {
public
XTable
()
{
super
();
TableSorter
sorter
;
setModel
(
sorter
=
new
TableSorter
());
@SuppressWarnings
(
"serial"
)
final
TableSorter
sorter
=
new
TableSorter
();
setModel
(
sorter
);
sorter
.
addMouseListenerToHeaderInTable
(
this
);
setRowSelectionAllowed
(
false
);
setColumnSelectionAllowed
(
false
);
...
...
@@ -54,6 +58,14 @@ public abstract class XTable extends JTable {
return
editableColor
;
}
/**
* Called by TableSorter if a mouse event requests to sort the rows.
* @param column the column against which the rows are sorted
*/
void
sortRequested
(
int
column
)
{
// This is a hook for subclasses
}
/**
* This returns the select index as the table was at initialization
*/
...
...
@@ -67,7 +79,7 @@ public abstract class XTable extends JTable {
public
int
convertRowToIndex
(
int
row
)
{
if
(
row
==
-
1
)
return
row
;
if
(
getModel
()
instanceof
TableSorter
)
{
return
((
(
TableSorter
)
getModel
()).
getInvertedIndex
()[
row
]
);
return
((
TableSorter
)
getModel
()).
getIndexOfRow
(
row
);
}
else
{
return
row
;
}
...
...
@@ -97,6 +109,7 @@ public abstract class XTable extends JTable {
//JTable re-implementation
//attribute can be editable even if unavailable
@Override
public
boolean
isCellEditable
(
int
row
,
int
col
)
{
return
((
isTableEditable
()
&&
isColumnEditable
(
col
)
&&
isWritable
(
row
)
...
...
@@ -118,6 +131,7 @@ public abstract class XTable extends JTable {
* This method sets read write rows to be blue, and other rows to be their
* default rendered colour.
*/
@Override
public
TableCellRenderer
getCellRenderer
(
int
row
,
int
column
)
{
DefaultTableCellRenderer
tcr
=
(
DefaultTableCellRenderer
)
super
.
getCellRenderer
(
row
,
column
);
...
...
@@ -146,6 +160,7 @@ public abstract class XTable extends JTable {
return
tcr
;
}
@Override
public
Component
prepareRenderer
(
TableCellRenderer
renderer
,
int
row
,
int
column
)
{
Component
comp
=
super
.
prepareRenderer
(
renderer
,
row
,
column
);
...
...
src/share/classes/sun/tools/jconsole/inspector/XTextFieldEditor.java
浏览文件 @
3e28ab1d
...
...
@@ -26,22 +26,30 @@
package
sun.tools.jconsole.inspector
;
import
java.awt.Component
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.FocusAdapter
;
import
java.awt.event.FocusEvent
;
import
java.awt.event.FocusListener
;
import
java.util.EventObject
;
import
java.awt.event.*
;
import
java.awt.dnd.DragSourceDropEvent
;
import
javax.swing.*
;
import
javax.swing.event.*
;
import
javax.swing.table.*
;
import
javax.swing.JMenuItem
;
import
javax.swing.JTable
;
import
javax.swing.JTextField
;
import
javax.swing.event.CellEditorListener
;
import
javax.swing.event.ChangeEvent
;
import
javax.swing.event.EventListenerList
;
import
javax.swing.table.TableCellEditor
;
@SuppressWarnings
(
"serial"
)
public
class
XTextFieldEditor
extends
XTextField
implements
TableCellEditor
{
protected
EventListenerList
l
istenerList
=
new
EventListenerList
();
protected
EventListenerList
evtL
istenerList
=
new
EventListenerList
();
protected
ChangeEvent
changeEvent
=
new
ChangeEvent
(
this
);
private
FocusListener
editorFocusListener
=
new
FocusAdapter
()
{
@Override
public
void
focusLost
(
FocusEvent
e
)
{
fireEditingStopped
();
// fireEditingStopped();
// must not call fireEditingStopped() here!
}
};
...
...
@@ -51,6 +59,7 @@ public class XTextFieldEditor extends XTextField implements TableCellEditor {
}
//edition stopped ou JMenuItem selection & JTextField selection
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
super
.
actionPerformed
(
e
);
if
((
e
.
getSource
()
instanceof
JMenuItem
)
||
...
...
@@ -67,16 +76,16 @@ public class XTextFieldEditor extends XTextField implements TableCellEditor {
//TableCellEditor implementation
public
void
addCellEditorListener
(
CellEditorListener
listener
)
{
l
istenerList
.
add
(
CellEditorListener
.
class
,
listener
);
evtL
istenerList
.
add
(
CellEditorListener
.
class
,
listener
);
}
public
void
removeCellEditorListener
(
CellEditorListener
listener
)
{
l
istenerList
.
remove
(
CellEditorListener
.
class
,
listener
);
evtL
istenerList
.
remove
(
CellEditorListener
.
class
,
listener
);
}
protected
void
fireEditingStopped
()
{
CellEditorListener
listener
;
Object
[]
listeners
=
l
istenerList
.
getListenerList
();
Object
[]
listeners
=
evtL
istenerList
.
getListenerList
();
for
(
int
i
=
0
;
i
<
listeners
.
length
;
i
++)
{
if
(
listeners
[
i
]
==
CellEditorListener
.
class
)
{
listener
=
(
CellEditorListener
)
listeners
[
i
+
1
];
...
...
@@ -87,7 +96,7 @@ public class XTextFieldEditor extends XTextField implements TableCellEditor {
protected
void
fireEditingCanceled
()
{
CellEditorListener
listener
;
Object
[]
listeners
=
l
istenerList
.
getListenerList
();
Object
[]
listeners
=
evtL
istenerList
.
getListenerList
();
for
(
int
i
=
0
;
i
<
listeners
.
length
;
i
++)
{
if
(
listeners
[
i
]
==
CellEditorListener
.
class
)
{
listener
=
(
CellEditorListener
)
listeners
[
i
+
1
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录