Sara Khelifi
Sara Khelifi

Reputation: 27

Swing components not displayed

This is my code and when I execute, all I get is a blank window. First when I tried to do main.setContentPane() I got this error:

"Cannot make a static reference to the non-static field panel"

So i put it in the constructor, but nothing would show.

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainFrame extends JFrame{
    private JPanel panel;
    private JButton performance;
    private JButton concordance;
    private JButton discordance;
    private JButton resultat;

    public void MainFrame() {
        panel = new JPanel(new GridLayout(4, 1, 10, 10));
        performance = new JButton("performance");
        concordance = new JButton("concordance");
        discordance = new JButton("discordance");
        resultat = new JButton("resultat");

        performance.setSize(50, 30);
        concordance.setSize(50, 30);
        discordance.setSize(50, 30);
        resultat.setSize(50, 30);

        panel.add(performance);
        panel.add(concordance);
        panel.add(discordance);
        panel.add(resultat);
        getContentPane().add(panel);

    }
    public static void main(String[] args) {
        MainFrame main = new MainFrame();
        main.setSize(300, 200);
        main.setDefaultCloseOperation(EXIT_ON_CLOSE);
        main.setVisible(true);
    }
}

Upvotes: 1

Views: 41

Answers (1)

richjavadev
richjavadev

Reputation: 36

You have a method (returning void) called MainFrame that is never being called.

You should either make that the constructor, or create a constructor that calls that method like so:

public class MainFrame extends JFrame {
  private JPanel panel;
  private JButton performance;
  private JButton concordance;
  private JButton discordance;
  private JButton resultat;

  public MainFrame() {
    super();
    MainFrame();
  }

  public void MainFrame() {
    panel = new JPanel(new GridLayout(4, 1, 10, 10));
    performance = new JButton("performance");
    concordance = new JButton("concordance");
    discordance = new JButton("discordance");
    resultat = new JButton("resultat");

    performance.setSize(50, 30);
    concordance.setSize(50, 30);
    discordance.setSize(50, 30);
    resultat.setSize(50, 30);

    panel.add(performance);
    panel.add(concordance);
    panel.add(discordance);
    panel.add(resultat);
    this.getContentPane().add(panel);

  }

  public static void main(String[] args) {
    MainFrame main = new MainFrame();
    main.setSize(300, 200);
    main.setDefaultCloseOperation(EXIT_ON_CLOSE);
    main.setVisible(true);
    main.MainFrame();
  }
}

Upvotes: 1

Related Questions