BufferStrategy是AWT的一部分,經常與Canvas類一起使用,但是它也可以與Swing UI結合而不會導致任何窗口顯示問題,或者我應該在這種情況下更好地使用純AWT嗎?謝謝你的回答。BufferStrategy和Swing合併?
回答
在我用它這樣的揮杆圖像預覽:
public class ImagePreview extends JFrame {
...
private final int BUFFERS = 2;
private BufferStrategy bufferStrategy;
...
@Override
public void paint(Graphics g) {
if (bufferStrategy == null) {
this.createBufferStrategy(BUFFERS);
this.bufferStrategy = this.getBufferStrategy();
}
...
for (int i = 0; i < BUFFERS; i++) {
Graphics2D g2Buffered = (Graphics2D) bufferStrategy.getDrawGraphics();
g2Buffered.draw(...
...
bufferStrategy.show();
g2Buffered.dispose();
}
}
}
我希望幫助。
但是如果我不想創建一個全屏應用程序並使用帶有JMenu的JFrame?在這種情況下,我應該更好地使用AWT嗎? – user1812379 2013-04-29 09:05:15
正如你可以看到它是一個帶有緩衝塗料方法的JFrame。 – Stefan 2013-04-29 13:46:04
據我所知只有java.awt.Canvas使用硬件加速,但這個類是AWT的一個子集。 – user1812379 2013-04-30 08:57:28
BufferStrategy實際上並不是AWT的一部分,即使它位於java.awt.image包中。出於歷史原因,所有與圖像相關的類都在java.awt.image包中。 BufferStrategy出現在Java 1.4中,到那時Swing是推薦的框架(與AWT相反)。
因此,您可以在Swing中使用BufferStrategy。它不需要普通的Swing組件,但它對遊戲很有用。
謝謝。這意味着BufferStrategy與重量級組件無關? BufferStrategy比內部Swing雙緩衝區更強大嗎? – user1812379 2013-06-20 10:59:57
它與重量級組件無關。 「強大」 - 取決於你的用例。 – lbalazscs 2013-06-20 17:23:58
- 1. Swing和JavaFX併發
- 2. 上BufferStrategy中
- 3. BufferStrategy滯後
- 4. 瞭解BufferStrategy
- 5. 試圖混合Swing和LWJGL
- 6. java.lang.IllegalStateException創建BufferStrategy中
- 7. BufferStrategy不縮放Graphics2D
- 8. Swing組件合併排序錯誤
- 9. 結合Java Swing和Java3D:併發性問題
- 10. BufferStrategy無法正常工作
- 11. 如何在Swing應用程序中混合Java Swing和JavaFX?
- 12. 從SWT和Swing混合幀(JFrame)
- 13. Java Swing:列表模型和集合
- 14. 畫一條線混合Swing和AWT
- 15. 結合的Tkinter(Python)的和Swing(Jython的)
- 16. Java Swing:結合CardLayout和JLayeredPane的效果
- 17. 試圖不要混合Swing和AWT
- 18. java swing組合框
- 19. 組合和合並
- 20. 合併和PHP
- 21. java swing組合框選擇和鏈接到其他組合框
- 22. 合併和合並Join任務
- 23. 合併期間的Git拉和合並
- 24. 合併列表和「合併」排序
- 25. Tensorflow合併尺寸和反向合併
- 26. Swing - 如何混合JTextField和JTextAreas並具有相同的視覺外觀?
- 27. BufferStrategy,Java中的多個異常和錯誤
- 28. BufferStrategy vs JFrame中的雙重緩衝
- 29. BufferStrategy使用非法狀態異常
- 30. Java Swing - 三點組合框
這個問題背後的動機是什麼? – 2013-04-28 15:17:25
默認情況下Swing是雙緩衝的,所以通常沒有理由使用BufferStrategy。 – camickr 2013-04-28 17:13:54
我讀過BufferStrategy要快得多。 – user1812379 2013-04-29 09:01:56