【发布时间】:2013-08-27 03:58:10
【问题描述】:
所以我已经有一段时间了。我的挥杆技术还不错,但现在我似乎缺少了一些东西。我最近一直在尝试使用 Jython,并且一直在使用 Jython 脚本中的 swing 包。
让我从这个开始:我的目标是让 JPanel 在 JFrame 上滑动。为了让我知道,我尝试过这样的尝试:
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 导入 * 从 java.awt 导入 * 从 java.awt.event 导入 * 进口时间
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()
有什么想法吗???
谢谢, 戴夫
【问题讨论】:
标签: python swing jpanel jython repaint