2015-10-15 27 views
0

因此,我正在製作一款遊戲,在有人獲勝後,我想要一種顯示「x贏了」或「y贏了」的方法。現在我的問題是,如果我讓方法繪製一個包含勝利消息的字符串,那麼我的IDE不允許我,因爲我不能使用Graphics g作爲顯式參數運行方法。如何調用以圖形g爲參數的方法?

是否有任何其他方式在JFrame屏幕上顯示消息?

這裏是我的代碼:

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*;` 
//nothing wrong here :P 
public class Demonstration extends JFrame { 
    private JButton b1; 
    private JButton b2; 
    public Demonstration() { 
     //My constructor 
     JPanel panel = new JPanel(); 
     panel.setLayout(null); 
     add(panel); 
     handler h = new handler(); 
     b1 = new JButton("yes"); 
     b2 = new JButton("no"); 
     //A sub - class to handle events. Created below 
     b1.setBounds(34, 34, 34, 34); 
     //random 
     panel.add(b1); 
     b1.addActionListener(h); 
     b2.setBounds(56, 56, 56, 56); 
     // random again 
     panel.add(b2); 
     b2.addActionListener(h); 
     setTitle("Demonstration"); 
     setBackground(Color.BLACK); 
     setDefaultCloseOperation(3); 
     setSize(720, 720); 
     setVisible(true); 
    } 
} 

這是我的面板。

public static void main (String[] args) { 
    new Demonstration(); 
} 

因此,讓我們說,我所做的處理程序類以後,我希望它運行一段代碼,它有一個的if/else爲其點擊按鈕(.getSource()),我想使用圖形重新設計界面並打印出勝利信息,我該怎麼做?

回答

1

是否有任何其他方式在JFrame屏幕上顯示消息?

不要試圖做自定義繪畫。我想使用JOptionPane

閱讀Swing教程中有關如何製作對話框的部分以獲取更多信息。

您可以使用簡單的JOptionPane.showMessageDialog(...)方法。

1

通常,您不明確調用採用Graphics的方法。相反,您應該重寫一個接受它的方法,並讓Swing在正確的時間爲您調用該方法。

對於JFrame,您覆蓋的方法是paint(Graphics)。然而,它的建議,以避免擴大JFrame,而是延長JPanel,覆蓋其paintComponent方法,以及自定義組件添加到JFrame

public class Demonstration extends JPanel{ 
    @Override 
    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     //Do your drawing here 
    } 
} 

這將確保在需要時您的組件獲得重繪(例如,如果JFrame被調整大小),並且還避免當組件稍後重新繪製時繪製繪製的內容。

+0

那麼你有什麼想法我可以使用它嗎? –

+0

@AditKirtani您可以在'JFrame'中使用它,通過類似於您現在使用'JPanel'的方式添加它。我建議''JFrame'的'BorderLayout','Demonstration'在中心,'JPanel'中的按鈕和'GridLayout'在南部。然後,只需將所有繪圖代碼移動到'paintComponent'方法中,它就會自動爲您調用它。 – resueman

1

當然,您可以運行以Graphics作爲參數的方法。任何Swing應用程序都這樣做。您也可以手動執行此操作,但在這種情況下,問題通常是如何獲取要繪製的繪圖位置的實例Graphics

有時你想要做的是擴大一些JComponent(通常爲JPanel)並覆蓋它的paintComponent(Graphics)方法。該方法收到的Graphics對象適合在該組件上繪圖。然後確保該組件的一個實例位於由應用程序的頂層窗口之一管理的組件之中。

可替代地,有時也可能是合適的,以改變在不同的部件的數據,諸如JLabelJButton的文本,或JTextArea的內容。

還要考慮到,爲了顯示某種風味的通告消息,彈出對話框可能是合適的。有多種方式來構建和顯示這樣的對話框,但JOptionPane提供了一些可能對您有用的快捷方式。

相關問題