在java中设计特定的UI

时间:2015-03-23 15:39:28

标签: java swing jframe jpanel jbutton

我想使用swing和awt在java中创建一个UI,以便:

**** BUTTON1 , BUTTON2,BUTTON3, BUTTON4, BUTTON5 **** (in a row )
***** GRID OF SIZE 20 X 20 ****** (next)

frame.setSize(1000,700);
    frame.setLayout(new BorderLayout());

    smile = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/sm.png");
    sad = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/smb.png");
    mine = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/mine.png");

    panel1.setLayout(new BorderLayout());

    panel2.setLayout(new GridLayout());
    smiley.setIcon(smile);
    Dimension d = new Dimension(30,20);
    smiley.setPreferredSize(d);//.setSize(30, 20);

    panel1.add(timer);
    panel1.add(score);
    panel1.add(smiley);
    panel1.validate();
    //frame.add(smiley,BorderLayout.NORTH);
    //smiley.addActionListener(this);
    //Button grid
    buttons = new JButton[nrows][ncols];
    grid.setLayout(new GridLayout(nrows,ncols));
    for(int i=0;i<nrows;i++){
        for(int j=0;j<ncols;j++){
            buttons[i][j] = new JButton();
            buttons[i][j].addActionListener(this);
            grid.add(buttons[i][j]);

        }
    }
    panel2.add(grid,BorderLayout.CENTER);
    //frame.add(grid,BorderLayout.CENTER);
    frame.add(panel1);
    frame.add(panel2);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

我创建了两个面板.. 第一个面板添加了所有3个按钮,布局设置为BorderLayout 第二个面板包含网格.. 然后将两个面板添加到具有布局边框布局的框架

但是没有添加按钮,网格显得很小......当我点击该网格按钮时,它会展开..

有人可以帮我创建这个UI吗?我是java的新手。请帮忙。

1 个答案:

答案 0 :(得分:2)

  

但未添加按钮

frame.setLayout(new BorderLayout());
...
frame.add(panel1);
frame.add(panel2);

您正在使用BorderLayout。您无法将组件添加到CENTER,只会显示添加的最后一个组件。尝试:

frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2.CENTER);
  

并且网格显得很小

frame.setSize(1000,700);

不要硬编码大小。让布局管理器通过调用pack()方法来完成它的工作:

frame.pack();
frame.setVisible(true);

不要哈哈