簡體   English   中英

將畫布添加到面板中不會顯示該畫布嗎?

[英]Adding a canvas to a panel doesn't show the canvas?

首先:對不起,如果之前曾問過這個問題,但是我似乎在任何地方都找不到答案,所以我們開始:

我正在嘗試將canvas元素添加到帶有標題邊框的面板中時顯示它。 這是我的代碼。

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中繪制的定義的線時,將導致帶有標題邊框的空白面板。 我在這里想念什么嗎? 甚至可以在面板上添加畫布元素嗎? 謝謝您的幫助:)

如果希望畫布拉伸到面板的尺寸,請更改:

JPanel panelCanvas = new JPanel();

至:

JPanel panelCanvas = new JPanel(new GridLayout());

另請參閱此答案

實際上,可以將Canvas對象添加到JPanel

您的問題在於您的Canvas沒有定義的大小。 您需要以下兩行

    canvas.setPreferredSize(new Dimension(1300,300));
    /*
     *
     */
    this.pack();

這會將您的畫布放置在panelCanvas邊框內,在淺灰色背景上顯示黑色垂直線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM