Java Canvas 或 JPanel

标签 java graphics jpanel java-canvas

用Java制作图形 Canvas 时,扩展哪个更好?您应该扩展 JPanel 还是 Canvas?有什么性能方面的考虑吗?

最佳答案

除非您需要在自定义呈现区域内放置其他组件,否则通常只需要对 JComponent 进行子类化(JPanel 没有提供任何特别有用的内容) ).


将 Swing 与 AWT 结合

顺便说一句——在将 Swing 与 AWT 混合使用时要特别小心。它通常会导致 Swing float GUI 元素出现渲染问题。 Java 7 promise 提供无缝混合基于 Swing 和 AWT 的组件的功能。

例如

import java.awt.*;
import javax.swing.*;

class MixSwingAwt {

    public static void main(String[] args) {
        JPanel p = new JPanel(new BorderLayout(10,10));

        String[] fruit = {"Apples", "Oranges", "Pears"};
        JComboBox fruitChoice = new JComboBox(fruit);
        p.add(fruitChoice, BorderLayout.NORTH);

        p.add(new TextArea(10,20));

        JOptionPane.showMessageDialog(null, p);
    }
}

截图

JComboBox 展开时使用 Java 6 的对话框屏幕截图。 enter image description here

我们可以看到 Apples 的顶部,但列表的其余部分不见了。

关于Java Canvas 或 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737609/

相关文章:

java - 速度 2.0 : NoClassDefFoundError: org/apache/velocity/runtime/log/CommonsLogLogChute

Java 和 UseLargePages

java - 在构造期间抛出异常后清理

android - 从主模块访问动态功能模块的可绘制文件夹中的图形

java - 在面板顶部添加面板并且两者都可见

java - 运行 spring 应用程序时出错( org.h2.jdbc.JdbcSQLNonTransientConnectionException : URL format error)

javascript - Canvas 自动像素混合/过渡功能

android - 3D 引擎对我有什么用?

java - JPanel 设置

java - 如何双倍缓冲矩形