我有一个按钮删除现有的JPanel并添加新的JPanel.但是当我按下那个按钮时,我的程序会挂起.我使用jstack跟踪并发现程序卡在removeAll()
这些是相关的线程转储:
"AWT-EventQueue-0" prio=6 tid=0x000000000df7f000 nid=0x394 runnable [0x000000002752a000]
java.lang.Thread.State: RUNNABLE
at java.lang.Thread.holdsLock(Native Method)
at java.awt.Component.checkTreeLock(Component.java:1199)
at java.awt.Component.getOpaqueShape(Component.java:9804)
at java.awt.Container.getOpaqueShape(Container.java:4066)
at java.awt.Component.calculateCurrentShape(Component.java:9892)
at java.awt.Component.applyCurrentShape(Component.java:9925)
at java.awt.Container.recursiveApplyCurrentShape(Container.java:4132)
at java.awt.Container.recursiveApplyCurrentShape(Container.java:4111)
at java.awt.Component.applyCurrentShapeBelowMe(Component.java:9943)
at java.awt.Component.mixOnHiding(Component.java:10003)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.mixOnHiding(Container.java:4265)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Component.removeNotify(Component.java:7027)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at java.awt.Container.removeNotify(Container.java:2816)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4771)
at java.awt.Container.removeNotify(Container.java:2800)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4771)
at java.awt.Container.removeNotify(Container.java:2800)
- locked <0x0000000089600fd0> (a java.awt.Component$AWTTreeLock)
at javax.swing.JComponent.removeNotify(JComponent.java:4771)
at java.awt.Container.removeNotify(Container.java:2800)
- …Run Code Online (Sandbox Code Playgroud) 有一个Paraview用户界面如下吸引我.
我认为这个接口可以用来为数组赋值.它的工作原理如下:
我想将它实现为Java程序,但我发现没有Java API可以支持我的想法.与我最接近的设计是添加多个JSlider,如下所示:
但是,如果它是一个100大小的阵列,我不想添加100个JSliders.你有更好的解决方案吗?