我是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) {
}
}
答案 0 :(得分:1)
我将通过下面的示例来演示您所拥有的选项(在这里,我已采用您的代码并将其最小化以证明我的观点。)
在这里,我提到了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);
}
}
答案 1 :(得分:-1)
您要么需要
在您的构造函数中添加以下内容:
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);
}
不过,我建议您学习使用布局管理器。