如何在 JFrame 中正确实现 JButton?它只是占据了整个屏幕

我是 GUI 制作的新手,我真的不知道如何正确实现 JButton。所以我已经把它放进去了,但我似乎无法让它不占据整个窗口。我只想要窗口底部的一个小按钮。


我试过 setbounds 和 setsize 但似乎都没有工作。


import java.awt.*;

import java.io.*;

import javax.swing.*;

import java.awt.event.*;


public class Menu extends JFrame implements ActionListener{


    private Container win;

    private Color color;

    private ImageIcon exportButton = new ImageIcon("export.png");


    public Menu(){

        super("MLA Formatter");

        JButton b1;

        win = getContentPane();

        win.setBackground(Color.white);

        b1 = new JButton("Export File");

        b1.setVerticalTextPosition(AbstractButton.CENTER);

        b1.setHorizontalTextPosition(AbstractButton.CENTER);

//        b1.setBounds(500,900,100,100);

        b1.setSize(100,100);

        add(b1);


    }


    public static void main(String[] args){

        Menu window = new Menu();

        window.setBounds(200, 200, 1000, 1000);

        window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        window.setVisible(true);

    }



    @Override

    public void actionPerformed(ActionEvent e) {


    }

}


绝地无双
浏览 212回答 2
2回答

尚方宝剑之说

我将尝试通过下面的示例演示您拥有的选项(在这里,我采用了您的代码并将其最小化以证明我的观点。)。在这里,我提到了 4 个选项。您可以取消注释每个选项下的代码(一次一个)并运行它并查看自己。import javax.swing.*;import java.awt.*;public class Menu extends JFrame {  public Menu() {    super("MLA Formatter");    JButton b1 = new JButton("Export File");    b1.setVerticalTextPosition(AbstractButton.CENTER);    b1.setHorizontalTextPosition(AbstractButton.CENTER);//Layout 1//Default layout of JFrame content pane is BorderLayout.//When we do not specify a constraint (like BorderLayout.SOUTH), default is BorderLayout.CENTER//So, this is equivalent to add(b1, BorderLayout.CENTER);    //add(b1);//Layout 2    //add(b1, BorderLayout.SOUTH);//Layout 3    //setLayout(new FlowLayout());    //add(b1);//Layout 4    setLayout(new GridBagLayout());    add(b1, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.SOUTH,        GridBagConstraints.NONE, new Insets(10, 10, 10, 10), 0, 0));  }  public static void main(String[] args) {    Menu window = new Menu();    window.setBounds(200, 200, 1000, 800);    window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);    window.setVisible(true);  }}

慕虎7371278

你要么需要正确使用您的布局管理器。(默认情况下为 JFrame,它的 BorderLayout)或者将布局设置为空。在您的构造函数中添加以下内容:setLayout(null);您的构造函数应如下所示:    public Menu(){        super("MLA Formatter");        JButton b1;        setLayout(null); // add this line        win = getContentPane();        win.setBackground(Color.white);        b1 = new JButton("Export File");        b1.setBounds(500,400,100,100);  //changed this co-ordinates(900 will overflow)        b1.setSize(100,100);        add(b1);    }不过,我建议您学习使用布局管理器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java