我有一個撲克遊戲,我設計了一個漂亮的圖形用戶界面來顯示卡片和玩家。我用了很多g2d.drawImage和g2d.drawString()的方法,在paint()內部擴展了JPanel,並確定了x和y的位置。JButton絕對在我的paint()板下
我現在的問題是,我需要在它下面有一個交互式按鈕..但每當我嘗試添加一個JButton,它會顯示頂部和中心。我已經使用了setLocation(x,y)和setLayout(null)以及我在其他回覆中看到的所有內容,但沒有一個符合我的需求(或者至少我沒有很好地理解在哪裏把它)
這是我的代碼是如何設置的: pokerserver.java
public class pokerserver extends JFrame {
public pokerserver() {
add(new drawing());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(720, 640);
setLocationRelativeTo(null);
setTitle("Poker HANGOUTS");
setResizable(false);
setVisible(true);
}
public static void main(String args[]) {
new pokerserver();
}
然後在drawing.class
public drawing() {
setFocusable(true);
setBackground(new Color(39,91,46));
setDoubleBuffered(true);
gameCards = new cards();
gameCards.shuffle();
for (int i = 0; i < 10; i++)
seats[i] = -1;
HQ = new HeadQuarters(this);
HQ.start();
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
//All my UI code
}
我最後的嘗試嘗試添加
JButton button = new JButton("TEST");
add(button);
button.setLocation(10, 500);
在公共繪圖()的末尾。一直看到在佈局管理的事情,但它不是幫助我 - 主要是因爲我不知道如何實現它
下面是截圖,以幫助可視化我在說關於我們 - >
試圖獲取下面的按鈕。除非有辦法將一個ActionListener添加到drawImage()?
我看到有人說,paintComponent()和paint()有什麼區別?我要給面板的東西一拍 – Sebastian
油漆負責繪製組件,它的邊界和它的孩子。如果您的繪畫覆蓋不會更改邊框或小孩繪畫,那麼您不會希望覆蓋paint而是paintComponent。否則你會冒着邊界和兒童繪畫的風險,帶來意想不到的後果。教程將告訴你這一切。 –
好的。 至於原始問題,我認爲主要問題是我對面板的混淆 - 我知道如何將組件添加到佈局並按照這種方式進行排列,但是如何將所有的油漆組合到面板中?在教程中,它有panel.add(component),但我使用g2d.drawImage(image,x,y)? 對不起,我的java swing知識是有限的,因爲我學習了Android的開發Java,所以我瀏覽了這個部分:P – Sebastian