【问题标题】:I am trying to add a JButton array that I added to a panel onto my JFrame, yet nothing is showing up我正在尝试将我添加到面板中的 JButton 数组添加到我的 JFrame 上,但没有显示任何内容
【发布时间】:2013-12-02 09:05:15
【问题描述】:

这是我的代码: 出于某种原因,我的屏幕上不会出现任何内容,但我不知道为什么,我相信我正在正确初始化它并添加它。帮助?

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class main implements MouseListener{

final int WIDTH = 800, HEIGHT = 500, BOARD_WIDTH = 10, BOARD_HEIGHT = 10;
private JButton [][]buttons = new JButton[BOARD_WIDTH][BOARD_HEIGHT];

public static void main(String[] args) {
    // TODO Auto-generated method stub
    new main();
}

public main()
{
    Start();
}

private void Start()
{

    JFrame mainFrame = new JFrame("MineSweeper");
    mainFrame.setVisible(true);
    mainFrame.setSize(WIDTH,HEIGHT);
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setLocationRelativeTo(null);
    mainFrame.setResizable(false);
    mainFrame.setLayout(new BorderLayout());

    JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(BOARD_WIDTH, BOARD_HEIGHT));

    for(int x = 0; x < BOARD_WIDTH; x++)
        for(int y = 0; y < BOARD_HEIGHT; y++)
        {
            buttons[x][y] = new JButton("01");
            buttons[x][y].addMouseListener(this);
            p1.add(buttons[x][y]);
        }

    mainFrame.add(p1, BorderLayout.CENTER); 
}

@Override
public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

}

感谢您的帮助! 也很抱歉有任何混淆,我的按钮不会出现在屏幕上,而不是框架不会出现。

【问题讨论】:

    标签: java swing jpanel


    【解决方案1】:

    最后拨打mainFrame.setVisible(true);

    private void Start()
    {
    
        JFrame mainFrame = new JFrame("MineSweeper");
        // Move this...
        //mainFrame.setVisible(true);
        //...
        mainFrame.add(p1, BorderLayout.CENTER); 
        // To here
        mainFrame.setVisible(true);
    }
    

    您还应该在 EDT 的上下文中启动您的应用程序。更多详情请关注Initial Threads

    您还应该避免在按钮上使用MouseListener,它们有一个ActionListener API,其中包括当用户单击按钮或“活动”键时的通知(通常是 Enter空格)

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多