我正在尝试写一个二十一点游戏,我希望有一个窗口,其中桌面图像都位于其中,而点击/保持按钮位于其中。但是,即使我尝试将(@ 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();
}
}
如何通过底部面板中的按钮获取框架中的图像?
答案 0 :(得分:1)
public class HitOrStayButton extends JButton{ JButton stayButton = new JButton("STAY"); JButton hitButton = new JButton("HIT");
你会期待一辆车内有另外两辆车吗?
首先浏览tutorials。
答案 1 :(得分:1)
其中表格图像都位于其中,而点击/停留按钮位于
您需要学会有效地使用“布局管理器”。框架内容窗格的默认布局管理器是BorderLayout
。您不能只将多个组件添加到同一位置。添加组件时,需要指定不同的约束(如BorderLayout.CENTER
和BorderLayout.PAGE_START
)。
阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和工作示例,以帮助您入门。