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中,实现