Java 如何将JButton添加到JFrame?

Java 如何将JButton添加到JFrame?,java,swing,jframe,jbutton,layout-manager,Java,Swing,Jframe,Jbutton,Layout Manager,我试图在JFrame中添加一个按钮,但由于某种原因它不会出现。我如何使它出现 import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.BorderFactory; import java.awt.Color;

我试图在
JFrame
中添加一个按钮,但由于某种原因它不会出现。我如何使它出现

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.*;

public class GraficoconArreglo extends javax.swing.JFrame {
 JPanel pan = (JPanel) this.getContentPane();
 JLabel []lab = new JLabel[6];
 JTextField []text = new JTextField[6];
 Border border = BorderFactory.createLineBorder(Color.pink,1);
 JButton b = new JButton("Calculate");

public GraficoconArreglo() {
    initComponents();
    pan.setLayout(null);
    pan.setBackground(Color.GRAY);
    for(int i=0; i<lab.length ;i++){
        lab[i] = new JLabel();
        text[i] = new JTextField();

        lab[i].setBounds(new Rectangle(15,(i+1)*40, 60, 25));
        lab[i].setText("Data " + (i+1));
        lab[i].setBorder(border);
        text[i].setBounds(new Rectangle(100,(i+1)*40, 60, 25));

        pan.add(lab[i],null);
        pan.add(text[i],null);

        setSize(200,330);
        setTitle("Arrays in forums.");

        add(b);
        b.addActionListener((ActionListener) this);
    }        
}
import javax.swing.JLabel;
导入javax.swing.JTextField;
导入javax.swing.JPanel;
导入javax.swing.SwingConstants;
导入javax.swing.border.border;
导入javax.swing.BorderFactory;
导入java.awt.Color;
导入java.awt.Container;
导入java.awt.Rectangle;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.*;
公共类GraficoconArreglo扩展了javax.swing.JFrame{
JPanel pan=(JPanel)this.getContentPane();
JLabel[]lab=新的JLabel[6];
JTextField[]text=新的JTextField[6];
Border Border=BorderFactory.createLineBorder(颜色:粉红色,1);
JButton b=新JButton(“计算”);
公共格拉菲科纳雷格罗(){
初始化组件();
pan.setLayout(空);
平底(颜色:灰色);

对于(int i=0;i您只创建了一个按钮,并将其添加到6个不同的位置。因此,您只能在添加的最后一个位置看到它。

您应该将该按钮添加到contentPane,而不是JFrame。Eclipse Marketplace的SwingDesigner提供的工作代码是:

public class Window extends JFrame {

private JPanel contentPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Window frame = new Window();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Window() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(null);
    setContentPane(contentPane);

    JButton btnNewButton = new JButton("New button");
    btnNewButton.setBounds(170, 110, 89, 23);
    contentPane.add(btnNewButton);
}

}

永远不要使用空布局。永远不要尝试直接调用
setBounds
。它永远不会工作。您的按钮可能不会出现,因为它超出了边界。1)为了更快地获得更好的帮助,发布一个或。2)以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度-以显示应如何使用额外的空间。3)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作。在不同的地区使用不同的PLAF。如这样,它们不利于像素完美的布局。请使用布局管理器,或者……以及布局填充和边框。(1-)不要使用空布局。Swing设计用于布局管理器。
您应该将按钮添加到contentPane,而不是JFrame。
-您可以将按钮添加到框架中。add()框架的方法将组件转发到框架的内容窗格。无需专门将内容窗格设置为面板,因为默认内容窗格已经是JPanel。