簡體   English   中英

Java GUI無法正確顯示

[英]java gui not displaying correctly

從另一種方法調用后,GUI出現問題,我正在制作多米諾骨牌游戲。

在這里的圖片中,GUI運行正常並且可以完成預期的工作,但是在第二張圖片中,我嘗試使用完全相同的GUI,但是它是通過不同的方式解析的(我有一個開始屏幕,它將調用該方法並使GUI可見)。 在控制台中,圖塊存儲在分配的數組中,並繪制到GUI上

第一張圖片

此處的第二個圖像是從firstScreen()類的actionlistener中調用playerVSAI方法。 此類僅是顯示在左側的窗口。 但是,在控制台上,playerVSAI方法似乎可以正常工作,但是未顯示圖塊的圖像。

將數據存儲到數組中並將圖塊繪制到上的方法是相同的,我在下面粘貼了一段代碼

        if(input2.equalsIgnoreCase("l"))
    {

        //add selected input to gameboard
        gameboardX.add(0,player.get(input1));

        JLabel imageTile = new JLabel(new ImageIcon(rotate(bi,rotateDegree)));

        //place domino image to left, Y direction still the same, only shift X , 
        // shift X by turnCounter, as turnCounter++  larger amount can only shift outwards
        c.gridy = startingY;
        c.gridx = startingX - turnCounter ;

        //add image
        gui.add(imageTile,c);
        gui.revalidate();
    }

第二張圖片

編輯

確保已調用setVisible(true);。 將元素添加到GUI末尾的行。

這看起來和感覺就像是一個線程問題,可能是您的線程和Swing之間的競爭條件(但是僅通過從主線程運行setVisible可能會發生這種情況)。

確保啟動窗口的所有邏輯均從EDT運行,並且沒有任何數據從其他線程傳遞到Swing對象。 最簡單的體系結構是將所有代碼放入EventQueue#invokeLater ,以后可以進行某種形式的同步(坦率地說,對於多米諾骨牌游戲,我不會...除非您有運行大量人工智能的代碼,的球員)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM