Java 为什么我的按钮没有出现?

Java 为什么我的按钮没有出现?,java,swing,user-interface,Java,Swing,User Interface,我正试图创建一个按钮数组,作为一个模拟的座位图,但按钮不会显示在屏幕上,只有框架显示出来。我做错了什么 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class guiCreator extends JFrame { public guiCreator() { setTitle("Seats"); setSize(500, 600);

我正试图创建一个按钮数组,作为一个模拟的座位图,但按钮不会显示在屏幕上,只有框架显示出来。我做错了什么

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class guiCreator extends JFrame
{
    public guiCreator()
    {
        setTitle("Seats");
        setSize(500, 600);
        addWindowListener(new WindowAdapter()
             {  public void windowClosing(WindowEvent e)
                {  System.exit(0);
                }
             } );

          Container contentPane = getContentPane();
          contentPane.add(new seatingPanel());
        setVisible(true);  
    }

}

class seatingPanel extends JPanel implements ActionListener
{
    public seatingPanel()
    {
        setLayout(new BorderLayout());

        JPanel panel4seating = new JPanel();//creating a grid panel
        panel4seating.setLayout(new GridLayout(4, 10));//setting the layout of the grid panel

        JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray
        for (int i = 0; i < 40; i++)
        {
            seats[i] = new JButton();//creating the buttons
            seats[i].addActionListener(this);
            panel4seating.add(seats[i]);
        }
    }

    @Override
    public void actionPerformed(ActionEvent evt) 
    {


    }
    //main
    guiCreator flightSeats = new guiCreator();
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类guiCreator扩展了JFrame
{
公共guiCreator()
{
片名(“席位”);
设置大小(500600);
addWindowListener(新的WindowAdapter()
{public void windowClosing(WindowEvent e)
{系统出口(0);
}
} );
容器contentPane=getContentPane();
添加(新的座椅面板());
setVisible(真);
}
}
类seatingPanel扩展JPanel实现ActionListener
{
公众席小组()
{
setLayout(新的BorderLayout());
JPanel panel 4seating=new JPanel();//创建网格面板
panel4seating.setLayout(新网格布局(4,10));//设置网格面板的布局
JButton[]seats=newjbutton[40];//创建指向按钮阵列的指针
对于(int i=0;i<40;i++)
{
seats[i]=newjbutton();//创建按钮
seats[i].addActionListener(this);
面板4座位。增加(座位[i]);
}
}
@凌驾
已执行的公共无效操作(操作事件evt)
{
}
//主要
guiCreator flightSeats=new guiCreator();

您正在
座椅面板的构造函数中创建一个新的
JPanel
,但您没有将其添加到
座椅面板本身,因此它根本不会显示

尝试将其添加到座椅面板的布局中


(或者完全取消该子面板-将网格布局和按钮直接设置到
座椅面板

您正在
座椅面板
的构造函数中创建一个新的
JPanel
,但您没有将其添加到
座椅面板
本身,因此它根本不会显示出来

尝试将其添加到座椅面板的布局中

(或者完全取消该子面板-将网格布局和按钮直接设置到您的
座椅面板

导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类GuiCreator扩展了JFrame
{
公共GuiCreator()
{
超级(“席位”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
容器contentPane=getContentPane();
添加(新的座椅面板());
包装();
setVisible(真);
}
公共静态void main(字符串[]args){
新的GuiCreator();
}
}
类座位面板扩展JPanel
{
公众席小组()
{
超级(新边框布局());
JPanel panel 4seating=new JPanel();//创建网格面板
panel4seating.setLayout(新网格布局(4,10));//设置网格面板的布局
JButton[]seats=newjbutton[40];//创建指向按钮阵列的指针
对于(int i=0;i<40;i++)
{
seats[i]=newjbutton();//创建按钮
//最好设置按钮的首选大小
座椅[i]。设置首选尺寸(新尺寸(50,25));
面板4座位。增加(座位[i]);
}
添加(面板4座椅、边框布局、中心);
}
}
  • GUI应该在EDT(我的懒惰)上创建
  • 名称使用大小写
  • 在本例中,无需扩展
    JFrame
    JPanel
对源代码的其他(未记录的)更改是改进。如果您对更改的任何部分有疑问,请询问。

import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类GuiCreator扩展了JFrame
{
公共GuiCreator()
{
超级(“席位”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
容器contentPane=getContentPane();
添加(新的座椅面板());
包装();
setVisible(真);
}
公共静态void main(字符串[]args){
新的GuiCreator();
}
}
类座位面板扩展JPanel
{
公众席小组()
{
超级(新边框布局());
JPanel panel 4seating=new JPanel();//创建网格面板
panel4seating.setLayout(新网格布局(4,10));//设置网格面板的布局
JButton[]seats=newjbutton[40];//创建指向按钮阵列的指针
对于(int i=0;i<40;i++)
{
seats[i]=newjbutton();//创建按钮
//最好设置按钮的首选大小
座椅[i]。设置首选尺寸(新尺寸(50,25));
面板4座位。增加(座位[i]);
}
添加(面板4座椅、边框布局、中心);
}
}
  • GUI应该在EDT(我的懒惰)上创建
  • 名称使用大小写
  • 在本例中,无需扩展
    JFrame
    JPanel

另一个(无文件记录)对源代码的更改是改进。如果您对更改的任何部分有疑问,请询问。

非常感谢。它可以工作吗?您可以检查我是否正确执行了操作侦听器吗?我正在尝试创建座位表,每当单击该按钮时,都会执行一个操作。我想使用其索引引用该按钮。如果我添加了一个r JPanel有一组不同的按钮我会使用同一个ActionListener吗?非常感谢你,它能工作吗?你能检查我的action listener是否正确吗?我正在尝试创建座位表,每当单击该按钮时,都会执行一个动作。我想使用其索引引用该按钮。如果我添加另一个JPanel,则会使用不同的按钮我将使用同一个actionListener的一组按钮
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GuiCreator extends JFrame
{
    public GuiCreator()
    {
        super("Seats");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();
        contentPane.add(new SeatingPanel());

        pack();    

        setVisible(true);
    }

    public static void main(String[] args) {
        new GuiCreator();
    }
}

class SeatingPanel extends JPanel
{
    public SeatingPanel()
    {
        super(new BorderLayout());

        JPanel panel4seating = new JPanel();//creating a grid panel
        panel4seating.setLayout(new GridLayout(4, 10));//setting the layout of the grid panel

        JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray
        for (int i = 0; i < 40; i++)
        {
            seats[i] = new JButton();//creating the buttons
            //better to set the preferred size of the button
            seats[i].setPreferredSize(new Dimension(50,25));
            panel4seating.add(seats[i]);
        }

        add(panel4seating, BorderLayout.CENTER);
    }
}