所以我已经有一段时间了。我的挥杆技术还不错,但现在我似乎缺少了一些东西。我最近一直在尝试使用 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()
但是,当我为事件添加更多复杂性时,它根本没有反应。没有更新、重绘或任何东西: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(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()
有任何想法吗???
谢谢,戴夫