【问题标题】:Swing components not displayed未显示的 Swing 组件
【发布时间】:2017-11-27 21:23:08
【问题描述】:

这是我的代码,当我执行时,我得到的只是一个空白窗口。首先,当我尝试做main.setContentPane() 时,我得到了这个错误:

“无法对非静态字段面板进行静态引用”

所以我把它放在构造函数中,但什么都不会显示。

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

【问题讨论】:

    标签: java swing jframe jpanel


    【解决方案1】:

    您有一个从未被调用过的名为 MainFrame 的方法(返回 void)。

    您应该将其设为构造函数,或者创建一个调用该方法的构造函数,如下所示:

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

    【讨论】:

    • 哇,我完全错过了它说的 void,我以为它是构造函数,只是看了一眼(经过测试,并按构造函数的预期工作)
    • 不用担心!它发生了。有时它有助于有一个外部的眼睛看看:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2012-04-18
    • 2015-04-24
    • 2010-10-27
    相关资源
    最近更新 更多