Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调整按钮和窗口的大小_Java_Swing_User Interface_Layout - Fatal编程技术网

Java 调整按钮和窗口的大小

Java 调整按钮和窗口的大小,java,swing,user-interface,layout,Java,Swing,User Interface,Layout,该窗口必须包含一个JPanel,其中包含一个8 x 8数组的JButtons,每个按钮的大小为69 x 69像素,并显示一个ImageIcon,而不是文本。窗口底部是一个JLabel、一个右对齐的JTextField和另外两个jbutton,如图所示。窗口大小必须为578 x 634像素,不能调整大小。启动时,窗口应显示随机排列的彩色按钮,如图所示 这就是我到目前为止所做的,非常感谢所有的帮助 import java.awt.*; import javax.swing.*; public cl

该窗口必须包含一个
JPanel
,其中包含一个8 x 8数组的
JButtons
,每个按钮的大小为69 x 69像素,并显示一个
ImageIcon
,而不是文本。窗口底部是一个JLabel、一个右对齐的JTextField和另外两个jbutton,如图所示。窗口大小必须为578 x 634像素,不能调整大小。启动时,窗口应显示随机排列的彩色按钮,如图所示

这就是我到目前为止所做的,非常感谢所有的帮助

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

public class ShinyButtons extends JFrame 
{
    public static byte RED = 0;
    public static byte ORANGE = 1;
    public static byte YELLOW = 2;
    public static byte GREEN = 3;
    public static byte BLUE = 4;
    public static byte LIGHT_GRAY = 5;
    public static byte DARK_GRAY = 6;

    public static byte ROWS = 8;

    private byte[][] buttonTable;

    public ShinyButtons() 
    {
        buttonTable = new byte[ROWS][ROWS];
        resetButtons();
    }

    private void resetButtons() 
    {
        for (int r=0; r<ROWS; r++)
            for (int c=0; c<ROWS; c++)
                buttonTable[r][c] = (byte)(Math.random()*7);
    }

    public byte getButton(int r, int c) {
        return buttonTable[r][c];
    }

    public ShinyButtons (String title) { 
        super(title); // Set title of window 
        setDefaultCloseOperation(EXIT_ON_CLOSE); // allow window to close 
        setSize(900, 300); // Set size of window      
    }

    public static ImageIcon[] icons = { 
            new ImageIcon("RedButton.png"), 
            new ImageIcon("OrangeButton.png"), 
            new ImageIcon("YellowButton.png"), 
            new ImageIcon("GreenButton.png"), 
            new ImageIcon("BlueButton.png"), 
            new ImageIcon("LightGrayButton.png"), 
            new ImageIcon("DarkGrayButton.png") 
        };

    public static void main(String[] args) {

        ShinyButtons frame; 
        frame = new ShinyButtons("Shiny Buttons");  // Create window     
        frame.setVisible(true); // Show window

        JPanel panel = new JPanel(new GridLayout(8, 8));
        ImageIcon r= new ImageIcon("RedButton.png");
        ImageIcon o= new ImageIcon("OrangeButton.png");
        ImageIcon y= new ImageIcon("YellowButton.png");
        ImageIcon g= new ImageIcon("GreenButton.png");
        ImageIcon b= new ImageIcon("BlueButton.png");
        ImageIcon l= new ImageIcon("LightGrayButton.png");
        ImageIcon d= new ImageIcon("DarkGrayButton.png");

        JButton btn;

        btn = new JButton(o);
        btn.setPreferredSize(new Dimension(200, 100));
        panel.add(btn);

        panel.add(new JButton(r));
        panel.add(new JButton(o));
        panel.add(new JButton(y));
        panel.add(new JButton(g));
        panel.add(new JButton(b));
        panel.add(new JButton(l));
        panel.add(new JButton(d));

        frame.add(panel);

        frame.setVisible(true);
    }
}
import java.awt.*;
导入javax.swing.*;
公共类ShinyButtons扩展JFrame
{
公共静态字节RED=0;
公共静态字节=1;
公共静态字节黄色=2;
公共静态字节绿色=3;
公共静态字节蓝色=4;
公共静态字节浅灰色=5;
公共静态字节深灰色=6;
公共静态字节行=8;
专用字节[][]按钮表;
公共ShinyButtons()
{
buttonTable=新字节[行][行];
重置按钮();
}
私有无效重置按钮()
{

对于(int r=0;r您可以使用
pack
,它允许框架使用您的内容首选大小来确定框架的大小

这一点很重要,因为此方法考虑了windows边框装饰,而
setSize
不考虑

千万不要对像素大小做出假设,尤其是在处理字体时,因为它们可能在不同的系统上以不同的大小呈现

像素完美的精度是一种幻觉,你应该更多地关注可用性和流程,让布局经理完成他们的工作


还要注意的是,在打包前使框架不可编辑非常重要。如果您有固定大小的按钮、jpanel和frame,您应该为按钮的最大值和最小值设置相同的值,在这种情况下为69x69,并将面板和框架的属性大小设置为false。

请回答问题。有问题吗ee感谢您的帮助。但是,现在我试图让按钮在单击时执行某些操作。我原以为我必须实现ActionListener,但这不起作用。我收到此错误。错误:ShinyButtons不是抽象的,并且不会覆盖抽象方法actionPerformed(java.awt.event.ActionEvent)在java.awt.event.ActionListenerSo中,实现