人。最近我开始研究一些简单的游戏来提高我的挥杆知识。我需要为我的一个项目使用JButtons,所以我做到了。 这是问题 ...Java JButton大小问题
当我打开窗口,而不是看到加载图像的正常屏幕,整个屏幕只是我添加到框架的最后一个按钮。我尝试使用setSize()
功能,但按钮仍然超大,并填满了屏幕。
代码:
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import java.awt.Image;
import java.io.*;
import java.net.URL;
import javax.imageio.*;
import java.awt.image.*;
import java.awt.Font;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class engine {
public static int chips = 5000;
public static String c = chips+"";
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GUI();
}
});
}
private static void GUI() {
JFrame f = new JFrame("Pinnacle Baccarat");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setPreferredSize(new Dimension(768, 512));
f.add(new p());
engine e2 = new engine();
JButton bet1 = new JButton("Bet 1 chip");
JButton bet2 = new JButton("Bet 10 chips");
JButton bet3 = new JButton("Bet 100 chips");
JButton bet4 = new JButton("Bet 1k chips");
JButton bet5 = new JButton("Bet 10k chips");
JButton bet6 = new JButton("Bet 100k chips");
if(e2.chips < 1){bet1.setEnabled(false);}
if(e2.chips > 0){bet1.setEnabled(true);}
if(e2.chips < 10){bet2.setEnabled(false);}
if(e2.chips > 9){bet2.setEnabled(true);}
if(e2.chips < 100){bet3.setEnabled(false);}
if(e2.chips > 99){bet3.setEnabled(true);}
if(e2.chips < 1000){bet4.setEnabled(false);}
if(e2.chips > 999){bet4.setEnabled(true);}
if(e2.chips < 10000){bet5.setEnabled(false);}
if(e2.chips > 9999){bet5.setEnabled(true);}
if(e2.chips < 100000){bet6.setEnabled(false);}
if(e2.chips > 99999){bet6.setEnabled(true);}
bet1.setPreferredSize(new Dimension(96, 32));
bet2.setPreferredSize(new Dimension(96, 32));
bet3.setPreferredSize(new Dimension(96, 32));
bet4.setPreferredSize(new Dimension(96, 32));
bet5.setPreferredSize(new Dimension(96, 32));
bet6.setPreferredSize(new Dimension(96, 32));
f.add(bet1);
f.add(bet2);
f.add(bet3);
f.add(bet4);
f.add(bet5);
f.add(bet6);
f.pack();
f.setVisible(true);
}
}
class p extends JPanel {
public p() {
}
public void paintComponent(Graphics g) {
engine eng = new engine();
super.paintComponent(g);
BufferedImage chip = null;
BufferedImage table = null;
try {
table = ImageIO.read(new File("bg.png"));
} catch (IOException e) {
}
try {
chip = ImageIO.read(new File("chip.png"));
} catch (IOException e) {
}
g.drawImage(table, 0, 0, null);
g.drawImage(chip, 4, 446, null);
g.setColor(new Color(255, 0, 0));
g.setFont(new Font("default", Font.BOLD, 20));
g.drawString(eng.c, 36, 467);
}
}
任何人可以帮助? 编辑:我也需要知道如何将按钮专门放置在地方。 编辑2:使用f.setLayout(null)
后,按钮工作,但我的绘画方法和图片被打破:他们不显示。谁能帮忙?
当我用'f.setLayout(新的FlowLayout());'它最终没有跟随我的界限,并从绘画方法去除照片。但是,当我删除它时,它工作正常,除了最后一个仍然覆盖屏幕,并且除最后一个外,所有按钮都显示正确。 我该如何解决这个问题? –
如果你想使用边界,那么你使用'f.setLayout(null);' – smistry
这是有效的,但我的绘画方法不再工作了! –