如何让我的JButton进入与我的图像相同的窗口?

时间:2017-07-02 08:16:35

标签: java swing jcomponent

我正在尝试写一个二十一点游戏,我希望有一个窗口,其中桌面图像都位于其中,而点击/保持按钮位于其中。但是,即使我尝试将(@ param)命中/保持按钮对象添加到框架中,按钮也会显示在单独的窗口中作为表格。

我的代码:

import java.awt.*;
import javax.swing.*;


public class BlackjackTable extends JComponent{

  private static final int WIDTH = 1200;
  private static final int HEIGHT = 800;
  private Rectangle table;
  private JButton hitOrStay;

  public BlackjackTable(){
    table = new Rectangle(0,0,WIDTH,HEIGHT);
    JFrame frame = new JFrame();
    JLabel lab = new JLabel(new ImageIcon("blackjackTableCanvas.jpg"));
    frame.setSize(1200,800);
    lab.setSize(1200,800);
    frame.add(lab);
    hitOrStay = new HitOrStayButton();
    frame.add(hitOrStay);
    frame.setTitle("Test Canvas");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(this);
    frame.setVisible(true);
  }

  public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    g2.draw(table);
  }

  public static void main(String[] args){
    BlackjackTable b = new BlackjackTable();

  }
}

我的点击或停留按钮:

public class HitOrStayButton extends JButton{

JButton stayButton = new JButton("STAY");
JButton hitButton = new JButton("HIT");

public HitOrStayButton(){
  ActionListener pressChoice = new DecisionListener();
  hitButton.addActionListener(pressChoice);
  stayButton.addActionListener(pressChoice);
  JPanel testPanel = new JPanel();
  testPanel.add(hitButton);
  testPanel.add(stayButton);
  JFrame testFrame = new JFrame();
  testFrame.add(testPanel);
  testFrame.setSize(300, 150);

  testFrame.setVisible(true);
}

class DecisionListener implements ActionListener{

    public void actionPerformed(ActionEvent a){

      if(a.getSource() == hitButton){
        System.out.println("YOU CHOSE HIT!");
      }
      else if(a.getSource() == stayButton){
        System.out.println("YOU CHOSE STAY!");
      }

    }
  }


  public static void main(String[] args){
    HitOrStayButton h = new HitOrStayButton();
  }

}

如何通过底部面板中的按钮获取框架中的图像?

2 个答案:

答案 0 :(得分:1)

public class HitOrStayButton extends JButton{

 JButton stayButton = new JButton("STAY");
 JButton hitButton = new JButton("HIT");

你会期待一辆车内有另外两辆车吗?

首先浏览tutorials

答案 1 :(得分:1)

  

其中表格图像都位于其中,而点击/停留按钮位于

您需要学会有效地使用“布局管理器”。框架内容窗格的默认布局管理器是BorderLayout。您不能只将多个组件添加到同一位置。添加组件时,需要指定不同的约束(如BorderLayout.CENTERBorderLayout.PAGE_START)。

阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和工作示例,以帮助您入门。