0
所以我一直在這一段時間了。我的揮杆技巧並不差,但現在我似乎失去了一些東西。我最近一直在使用Jython進行試驗,我一直在使用Jython腳本中的swing包。當我在另一個函數內部運行JPanel.setLocation(x,y)函數時,爲什麼我的JPanel沒有更新?
讓我從這開始:我的目標是讓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()
但是,當我稍微增加更多的複雜性的事件,它沒有任何反應都沒有。沒有更新,重新粉刷或任何東西: 從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()
任何想法從java.awt中導入* javax.swing中導入* ???
謝謝, 戴夫