简体   繁体   English

如何将JButton添加到JFrame?

[英]How to add a JButton to a JFrame?

I tried to add a button to the JFrame , but it won't appear for some reason. 我试图将按钮添加到JFrame ,但是由于某种原因它不会出现。 How do I make it appear? 如何使其显示?

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);
    }        
}

You are creating only one button and adding it to 6 different places. 您仅创建一个按钮并将其添加到6个不同的位置。 Therefore, you only would see it on the last place you added. 因此,您只会在最后添加的地方看到它。

You should add the button to the contentPane, not the JFrame. 您应该将按钮添加到contentPane,而不是JFrame。 A working code for this, provided from SwingDesigner from Eclipse Marketplace would be: 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);
}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM