0

最近私はJythonを学び始めましたが、今はかなり単純な問題があります。アニメのクオリティを上げたい。残念ながら、アプレットにダブル バッファリングを追加する方法がわかりません。私たちを手伝ってくれますか?よろしくお願いします!

from javax.swing import JToolBar
from javax.swing import JButton
from javax.swing import JFrame
import time
from java import awt 
from java.awt import BorderLayout


class Canvas(awt.Canvas): 
    u"Canvas - drawing area"
    def __init__(self,winSize = 400): 
        self.play = False
        self.background=awt.Color.black 
        self.winSize = winSize
        self.l = 0
    def playSim(self, play):
        if play == True: 
            self.play = True
            self.repaint()
        else: self.play = False
    def paint(self, g):    
        g.fillRect(50, int(self.winSize/4), self.l, int(self.winSize/2))
        if self.l < self.winSize: self.l += 1
        else: self.l = 0
        time.sleep(0.02)
        if self.play == True: self.repaint()


class Example(JFrame):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        winSize = 600
        toolbar = JToolBar()
        self.playButton = JButton("Start", actionPerformed=self.playButtonPress )
        toolbar.add(self.playButton)
        self.add(toolbar, BorderLayout.NORTH)

        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        self.setSize(winSize, winSize)
        self.setResizable(False)
        self.setLocationRelativeTo(None)
        self.setVisible(True)
        self.canvas = Canvas(winSize)
        self.getContentPane().add(self.canvas)  
        self.setTitle("TEST")
        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

    def playButtonPress(self, e):
        if self.playButton.getLabel() == "Start": 
            self.canvas.playSim(True)
            self.playButton.setLabel("Stop")
        else: 
            self.playButton.setLabel("Start")
            self.canvas.playSim(False)

if __name__ == '__main__':
    Example()
4

1 に答える 1

0

最近の問題を解決しました:

from javax.swing import JToolBar
from javax.swing import JButton
from javax.swing import JFrame
import time
from java import awt 
from java.awt import BorderLayout


class Canvas(awt.Canvas): 
    u"Canvas - drawing area"
    def __init__(self,winSize = 400): 
        self.play = False
        self.background=awt.Color.black 
        self.winSize = winSize
        self.l = 0
        self.bi = BufferedImage(winSize, winSize, BufferedImage.TYPE_INT_RGB)
        self.offScreenGraphics = self.bi.getGraphics()
    def playSim(self, play):
        if play == True: 
            self.play = True
            self.repaint()
        else: self.play = False
    def paint(self, g):    
        self.offScreenGraphics.fillRect(50, int(self.winSize/4), self.l, int(self.winSize/2))
        if self.l < self.winSize: self.l += 1
        else: self.l = 0
        g.drawImage(self.bi, 0, 0, None)
        time.sleep(0.02)
        if self.play == True: self.repaint()


class Example(JFrame):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        winSize = 600
        toolbar = JToolBar()
        self.playButton = JButton("Start", actionPerformed=self.playButtonPress )
        toolbar.add(self.playButton)
        self.add(toolbar, BorderLayout.NORTH)

        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        self.setSize(winSize, winSize)
        self.setResizable(False)
        self.setLocationRelativeTo(None)
        self.setVisible(True)
        self.canvas = Canvas(winSize)
        self.getContentPane().add(self.canvas)  
        self.setTitle("TEST")
        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

    def playButtonPress(self, e):
        if self.playButton.getLabel() == "Start": 
            self.canvas.playSim(True)
            self.playButton.setLabel("Stop")
        else: 
            self.playButton.setLabel("Start")
            self.canvas.playSim(False)

if __name__ == '__main__':
    Example()

今、私は別の(かなり些細な)問題を抱えています:このpythonファイルから、アプレットとしてウェブサイトに公開する準備ができている*クラスファイル*を作成するにはどうすればよいですか?

于 2013-04-27T18:21:34.673 に答える