繁体   English   中英

Java JButton大小调整问题

[英]Java JButton sizing issue

人。 最近,我开始研究一些简单的游戏,以提高对挥杆的了解。 我需要为我的一个项目使用JButtons,所以我做到了。 这是问题所在 ...

当我打开窗口时,没有看到加载了图像的普通屏幕,而是整个屏幕只是我添加到框架的最后一个按钮。 我尝试使用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) ,按钮可以使用,但是我的绘制方法和图片都损坏了:它们不显示。 有人可以帮忙吗?

JFrame的默认布局管理器是BorderLayout。 这仅允许在五个位置中的任何一个位置使用一个组件。 通过无限制地添加按钮,按钮将被添加到中心位置,并且每个按钮都会替换之前的按钮。

有关更多信息,请参见《布局视觉指南》

编辑以添加一些信息:还要忘记setXxxSize()方法,并尝试手动放置组件。 布局管理器将忽略您设置的尺寸,并将为您确定尺寸和放置组件。 了解不同的布局管理器,并结合使用它们以获取所需的布局。

由于未指定布局管理器,因此添加以下内容:

f.setLayout(new FlowLayout());

另外,要了解如何设置内容的位置,请阅读有关布局管理器的信息,或为面板使用setLayout(null) ,然后使用setBounds()方法设置元素的X和Y位置。

每个新创建的JButton将替换上一个创建的按钮,这是由于JFrame的默认布局(即BorderLayout)和JButton的居中位置。 您需要做的是将布局设置为另一种布局,这将允许您以不同的方式来安排JButton。

在这里了解更多信息---> http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM