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