4

用Java制作图形画布时,哪个更好扩展?您应该扩展 JPanel 还是 Canvas?是否有任何性能考虑?

4

1 回答 1

2

除非您需要在自定义渲染区域内放置其他组件,否则子类JComponent通常是所有必要的(JPanel不提供任何特别有用的东西)。


将 Swing 与 AWT 混合

顺便说一句 - 将 Swing 与 AWT 混合使用时要特别小心。它通常会导致 Swing 浮动 GUI 元素出现渲染问题。Java 7 承诺提供无缝混合基于 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);
    }
}

截屏

展开时使用 Java 6 的对话框的屏幕截图JComboBox在此处输入图像描述

我们可以看到 的顶部Apples,但缺少列表的其余部分。

于 2011-04-20T23:12:38.507 回答