所以我现在已经有一段时间了。我的挥杆技巧也不错,但是现在我似乎错过了一些东西。我最近一直在试验Jython,并且我一直在使用Jython脚本中的swing包。
让我从这开始:我的目标是在JFrame上制作JPanel幻灯片。据我所知,我尝试过这样的尝试:
x = 0
while panel.getX() < frame.getWidth():
print "panel.getX(): %i" % panel.getX()
panel.setLocation(x,0)
x += 5
time.sleep(0.01)
但这是我困惑的主旨......我在我的代码中运行了它,它完全符合我的要求。 JPanel滑过JFrame,我可以看到它这样做:
from javax.swing import *
from java.awt import *
from java.awt.event import *
import time
f = JFrame()
p = JPanel()
p.setPreferredSize(Dimension(300,300))
def slide():
x = 0
while p.getX() < f.getWidth():
print "p.getX(): %i" % p.getX()
p.setLocation(x,0)
x += 5
time.sleep(0.5)
p.add(JLabel("hi"))
f.getContentPane().add(p)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setVisible(True)
f.pack()
slide()
但是,当我为事件添加更多复杂性时,它根本没有任何反应。没有更新,重新绘制或任何东西: 来自javax.swing import * 来自java.awt import * 来自java.awt.event import * 进口时间
f = JFrame()
p = JPanel()
p.setPreferredSize(Dimension(300,300))
def slide(event):
x = 0
while p.getX() < f.getWidth():
print "p.getX(): %i" % p.getX()
p.setLocation(x,0)
x += 5
time.sleep(0.5)
b = JButton(actionPerformed=slide)
p.add(JLabel("hi"))
f.getContentPane().setLayout(BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS))
f.getContentPane().add(p)
f.getContentPane().add(b)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setVisible(True)
f.pack()
任何想法???
谢谢, 戴夫