почему мои кнопки не отображаются? - PullRequest
1 голос
/ 11 июня 2011

Я пытаюсь создать массив кнопок в качестве симуляции посадочного места, но кнопки не будут отображаться на экране, отображается только рамка что я делаю не так?

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

Ответы [ 2 ]

2 голосов
/ 11 июня 2011
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);
    }
}
  • GUI должны быть созданы на EDT (моя лень).
  • Используйте верблюжий регистр для имен.
  • В этом случае нет необходимости расширять либо JFrame, либо JPanel.

Другие (недокументированные) изменения в источнике являются улучшениями.Если у вас есть вопросы по какой-либо части изменений, задавайте.

1 голос
/ 11 июня 2011

Вы создаете новый JPanel в конструкторе seatingPanel, но не добавляете его в сам seatingPanel, поэтому он вообще не будет отображаться.

Попробуйте добавить его к макету seatPanel.

(Или полностью покончить с этой дополнительной панелью - установите макет сетки и и кнопки прямо на seatingPanel.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...