2 回答
TA贡献1788条经验 获得超4个赞
我将尝试通过下面的示例演示您拥有的选项(在这里,我采用了您的代码并将其最小化以证明我的观点。)。
在这里,我提到了 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);
}
}
TA贡献1802条经验 获得超4个赞
你要么需要
正确使用您的布局管理器。(默认情况下为 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);
}
不过,我建议您学习使用布局管理器。
添加回答
举报