第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由于 Gradle,Intellij (Swing) GUI 無法編譯

由于 Gradle,Intellij (Swing) GUI 無法編譯

嚕嚕噠 2022-10-20 17:33:51
我有一個 Gradle 項目,我正在嘗試創(chuàng)建一個 GUI(Swing,使用 Intellij);但是,我一直收到編譯錯誤。完全相同的 GUI 代碼可以在標準 Java 項目上運行并且編譯良好。圖形用戶界面package gui;import javax.swing.*;public class ApplicationGUI {    private JPanel rootPanel;    private JLabel testLabel;    public static void main(String[] args) {        JFrame frame = new JFrame("ApplicationGUI");        frame.setContentPane(new ApplicationGUI().rootPanel);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.pack();        frame.setVisible(true);    }}搖籃dependencies {    testCompile group: 'junit', name: 'junit', version: '4.12'    compile 'ca.uhn.hapi.fhir:hapi-fhir-base:3.7.0'    compile 'ca.uhn.hapi.fhir:hapi-fhir-structures-dstu3:3.7.0'    compile 'ca.uhn.hapi.fhir:hapi-fhir-client:3.7.0'}錯誤線程“main”java.awt.IllegalComponentStateException 中的任務(wù):ApplicationGUI.main() FAILED 異常:contentPane 不能設(shè)置為 null。在 javax.swing.JRootPane.setContentPane(JRootPane.java:621) 在 javax.swing.JFrame.setContentPane(JFrame.java:698) 在 gui.ApplicationGUI.main(ApplicationGUI.java:11)在我的設(shè)置中,我將 GUI 設(shè)計器設(shè)置為 Java 源代碼。我究竟做錯了什么?干杯編輯1:我可以確認上面的代碼在 Maven 中 100% 正常工作。
查看完整描述

4 回答

?
交互式愛情

TA貢獻1712條經(jīng)驗 獲得超3個贊

通過更改 intellij 設(shè)置解決:

我檢查過:

  • 自動導(dǎo)入...

  • 使用 -set -intellij 構(gòu)建和運行

  • 使用 -set -intellij 運行測試

  • Gradle JVM - 設(shè)置 - 使用項目JDK

http://img1.sycdn.imooc.com//6351161d000166e810150711.jpg

我的代碼是:


package com.mygdx.game.desktop;


import javax.swing.*;

import com.badlogic.gdx.backends.lwjgl.LwjglAWTCanvas;

import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;

import com.mygdx.game.MyGdxGame;

import java.awt.*;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;


public class MainForm {

    private JPanel mainpanel_1;

    private JPanel visualizationPanel_1;

    private JButton button1;


    private static MyGdxGame visualization;

    private JFrame mainFrame;


    public MainForm(JFrame frame) {

        mainFrame = frame;

    }


    public static void main(String[] args) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {


        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());


        SwingUtilities.invokeLater(() -> {

            JFrame frame = new JFrame("My First Swing Example");

            frame.setResizable(false);

            frame.setMinimumSize(new Dimension(1300, 850));

            frame.setSize(1300, 850);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


            MainForm mf = new MainForm(frame);

            if(mf.mainpanel_1 != null) {

                frame.setContentPane(mf.mainpanel_1);

            }


            visualization = new MyGdxGame();


            LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

            config.width = 1200;

            config.height = 800;

            config.forceExit = false;

            config.resizable = false;

            LwjglAWTCanvas lwjglCanvas = new LwjglAWTCanvas(visualization, config);

            mf.visualizationPanel_1.add(lwjglCanvas.getCanvas());


            frame.addWindowListener(new WindowAdapter() {

                @Override

                public void windowClosing(WindowEvent windowEvent) {

                    lwjglCanvas.stop();

                    System.exit(0);

                }



            });


            frame.pack();


            // Setting the frame visibility to true

            frame.setVisible(true);

        });

    }



}


查看完整回答
反對 回復(fù) 2022-10-20
?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

只是將執(zhí)行從 Gradle 更改為 Intellij 并不能解決主要問題,因為在構(gòu)建 Gradle jar 時它將繼續(xù)不起作用。

我執(zhí)行了以下操作來解決問題并繼續(xù)使用 Gradle。

進入Editor -> GUI Designer -> Generate GUI into,選擇Java源

http://img1.sycdn.imooc.com//635116300001183504580247.jpg

將 Intellij 表單依賴項添加到您的 gradle 項目

implementation 'com.intellij:forms_rt:7.0.3'

轉(zhuǎn)到編輯器的 GUI 并進行一些更改(例如創(chuàng)建新組件或更改標簽),這樣 Intellij 將生成必要的代碼。

運行主類


查看完整回答
反對 回復(fù) 2022-10-20
?
喵喔喔

TA貢獻1735條經(jīng)驗 獲得超5個贊

這似乎是 Gradle 和 Intellij 之間的問題。一個解決方案是遷移到 Maven。GUI的.form文件(由 Intellij 生成)應(yīng)在該行初始化,frame.setContentPane(new ApplicationGUI().rootPanel);但這不會發(fā)生。使用 Maven 時沒有問題。



查看完整回答
反對 回復(fù) 2022-10-20
?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

如評論中所述,您的 rootPanel 從未初始化,因此它為空。默認情況下,JFrame 已經(jīng)有一個 jpanel contentPane,因此您實際上并不需要以下行,除非您打算替換它:

frame.setContentPane(new ApplicationGUI().rootPanel);

公共無效 setContentPane(容器內(nèi)容窗格)

設(shè)置 contentPane 屬性。此方法由構(gòu)造函數(shù)調(diào)用。Swing 的繪制體系結(jié)構(gòu)需要包含層次結(jié)構(gòu)中的不透明 JComponent。這通常由內(nèi)容窗格提供。如果您替換內(nèi)容窗格,建議您將其替換為不透明的 JComponent。

下面是一些創(chuàng)建框架并為其添加標簽的示例代碼。

public class ApplicationGUI{

    public static void main(String[] args) {

        JLabel aLabel = new JLabel("some text");

        JFrame frame = new JFrame("ApplicationGUI");

        frame.getContentPane().add(aLabel);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(300,300);

        frame.setVisible(true);

    }

}


查看完整回答
反對 回復(fù) 2022-10-20
  • 4 回答
  • 0 關(guān)注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號