用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 的对话框屏幕截图。
我们可以看到 Apples
的顶部,但列表的其余部分不见了。
关于Java Canvas 或 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737609/