当前位置: 首页 > 知识库问答 >
问题:

未显示Swing组件

萧星火
2023-03-14

这是我的代码,当我执行时,我得到的只是一个空白窗口。首先,当我尝试执行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);
    }
}

共有1个答案

於宏大
2023-03-14

您有一个名为“大型机”的方法(返回 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();
  }
}
 类似资料:
  • 我有一个Java swing GUI,使用其他窗口管理器可以很好地运行和显示,但当我在Xmonad中运行它时,它不能正确显示。所有显示的是窗口的框架,它是灰色的,没有按钮,菜单等。我如何使Swing GUI显示正确?

  • 问题内容: 我试图在组件的工具提示中显示多个图像,找到并实现了一个自定义,该自定义添加了所需的组件,如下所示: 但是,我所看到的只是一个小点,表明显示了工具提示,但是以某种方式忽略了大小。我会错过实现自定义工具提示的什么? 问题答案: 基本的“问题”是JToolTip 不是 设计为容器,只是偶然地是一个容器,因为JComponent是。对于Swing“非容器”,它的ui委托负责充当LayoutMa

  • 我创建了一个JFrame,其中包含一个JSplitPane,它在左侧包含一个画布,在右侧包含一个JPanel。画布包含LWJGL显示,而JPanel中几乎没有JTextFields。问题是,当我按下LWJGL显示器上的鼠标按钮时,我无法再将文本写入JTextFields。当我最小化应用程序并将其返回时,它会一直工作,直到我再次按下显示器。 为什么我会遇到这个问题?我怎么能修好它? 注意:我可以专注

  • 主要内容:1 Swing显示图片的介绍,2 Swing显示图片的方法,3 Swing显示图片的案例1 Swing显示图片的介绍 为了显示图像,我们可以使用Graphics类的drawImage() 方法。 2 Swing显示图片的方法 方法 描述 public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) 用于绘制指定的图像。 3 Swing显示图片的案例 输出结果为:

  • 问题内容: 我正在为我的学生编写MathQuiz,包括用于渲染的JLatexMath和用于蜂鸣器的jinput。问题是,有时(像每四次一样)当我启动程序时,所有组件都不可见。它们在调整JFrame大小后出现。首先,我想到了jinput或jlatexMath库中的Bug,但是即使使用最小的代码,我也会遇到相同的错误: 代码有什么问题? 问题答案: 首先移到构造函数的末尾。 而不是去这里… 移到这里…

  • 我正试图在现有的应用程序中实现新的Android导航组件。我有两个片段除了名字外都是一样的。当我将startDestination设置为fragment2时,片段似乎显示正确。当startDestination设置为fragment1时,我看不到膨胀的视图,但我确实看到了“Fragment 1 created”toast。 我做错了什么? 导航图。xml 主活动布局: Fragment1布局: 依