该窗口必须包含一个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);
}
}
答案 0 :(得分:3)
您可以使用pack
允许框架使用您的内容首选尺寸来确定框架的大小。
这很重要,因为此方法会考虑窗口边框装饰,setSize
不会
你永远不应该对像素大小做出假设,特别是当你处理字体时,因为它们可能在不同的系统上以不同的大小呈现
像素完美精度是一种幻觉,你应该更多地关注可用性和流程,让布局经理做好自己的工作......
另请注意,在打包之前使框架无法打印非常重要
答案 1 :(得分:-1)
如果你有固定大小的按钮,jpanel和frame,你应该使用为按钮的最大值和最小值设置相同的值,在这种情况下是69x69,并且对于面板和框架,将属性resizable为false。