【发布时间】:2016-09-09 12:15:26
【问题描述】:
首先:抱歉,如果之前有人问过这个问题,但我似乎无法在任何地方找到答案,所以我们开始吧:
我试图让一个画布元素在它被添加到面板时显示,面板周围有一个标题边框。这是我的代码。
public class TestClass extends JFrame{
private TestClass() {
GuiCanvas canvas = new GuiCanvas();
setTitle("TestClass");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1300, 800);
Border menuBorder = BorderFactory.createTitledBorder(
BorderFactory.createLineBorder(Color.LIGHT_GRAY), "Overview");
JPanel controlpanel = new JPanel();
JPanel panelCanvas = new JPanel();
panelCanvas.setBorder(menuBorder);
panelCanvas.add(canvas);
controlpanel.setLayout(new GridLayout(3, 1));
controlpanel.add(panelCanvas);
add(controlpanel);
setLocationRelativeTo(null);
setVisible(true);
System.out.println(canvas.getBounds());
}
private class GuiCanvas extends Canvas {
GuiCanvas() {
setBackground(Color.LIGHT_GRAY);
}
@Override
public void paint(Graphics g) {
g.drawLine(20, 20, 20, 200);
}
}
public static void main(String[] args) {
new TestClass();
}
}
当上面的代码应该显示我在 GuiCanvas-Class 中绘制的定义线时,会产生一个带有标题边框的空面板。我在这里错过了什么吗?甚至可以将画布元素添加到面板吗?提前感谢您的帮助:)
【问题讨论】:
-
避免混合使用重量级和轻量级容器,它们不能很好地相互配合。除非你在玩
BufferStrategy,否则没有必要使用Canvas
标签: java swing canvas jframe awt