Так что я был на это какое-то время. Мои навыки качания неплохие, но сейчас я, кажется, что-то упускаю. Я экспериментировал с Jython совсем недавно, и я использовал пакет swing из сценария Jython.Почему мой JPanel не обновляется, когда я запускаю функцию JPanel.setLocation (x, y) внутри другой функции?
Позвольте мне начать с этого: моя цель - сделать слайд 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()
Любые идеи ???
Спасибо, Dave