簡體   English   中英

如何將按鈕和畫布放入jframe? (Java搖擺)

[英]How to put buttons and canvas into jframe? (Java swing)

我有一個JFrame以及一些按鈕和文本字段。 我正在使用絕對定位(空布局)。 我嘗試創建一個要繪制的畫布,但是當我嘗試將畫布添加到容器中然后再添加到框架中時,畫布將覆蓋所有按鈕。 我希望按鈕旁邊的畫布都可見。

這是我的代碼:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Gui extends JFrame {
    private JLabel labEnterWord;
    private JTextField tfWord;
    private JButton butOk;

    public Gui(String title) {
        super(title);
        JPanel p = new JPanel();
        p.setLayout(null);

        //Create components and add them to the container
        addComponents(p);

        //Add containers to window
        getContentPane().add(p);
        getContentPane().add(new MyCanvas());

        setWindowProperties();
    }

    private void addComponents(JPanel p) {
        labEnterWord = new JLabel("Enter your word:");
        labEnterWord.setBounds(100, 60, 200, 30);                   
        labEnterWord.setFont(new Font("Arial", Font.PLAIN, 20));
        p.add(labEnterWord);

        tfWord = new JTextField();
        tfWord.setBounds(100, 100, 100, 25);
        tfWord.setFont(new Font("Arial", Font.PLAIN, 14));
        p.add(tfWord);

        butOk = new JButton("OK");
        butOk.setBounds(220, 100, 51, 25);
        butOk.addActionListener(new Event());
        p.add(butOk);
    }

    private void setWindowProperties(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setSize(1280, 720);
        setResizable(false);
        setLocationRelativeTo(null);
    }
}

MyCanvas類:

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

public class MyCanvas extends JPanel {

    public void drawing(){
        repaint();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.drawRect(500, 200, 200, 200);
    }
}

主類僅調用Gui()。

這里:

getContentPane().add(p);
getContentPane().add(new MyCanvas());

第一個將帶有按鈕的面板添加到框架。 然后在框架中添加其他內容!

按照您手動放置所有內容的方法,您寧可將該畫布添加到面板中

您禁用了所有允許JFrame響應的方法。 布局管理器,以有意義地放置面板和畫布。 取而代之的是,您將兩個元素推入框架,而無需告訴框架畫布應該去的位置!

因此,您也需要畫布的絕對放置-或退后一步,然后轉到布局管理器為您完成此操作。

暫無
暫無

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

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