Java正在画2个盒子

标签 java swing

所以我正在制作一个小游戏来学习一些图形java,但我在使用按钮时遇到了问题。它是图 2,其中一个尺寸正确且位置正确,然后在应用程序顶部的中心有一个非常小的按钮。应该只有 (0,0,200,50) 处的一个按钮。我不知道出了什么问题,但这是按钮的代码,如果您需要更多内容,请告诉我!

ImageIcon test = new ImageIcon("nhButton.png");
    JButton jb = new JButton(test);
    jb.setBounds(0, 0, 200, 50);
    jb.setVisible(true);
    add(jb);

EDIT1:错误将是的 2 个类:board.java:

import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Board extends JPanel {


    public Board() { 

    }

    @Override
    public void paintComponent(Graphics g) {
        ImageIcon test = new ImageIcon("nhButton.png");
        JButton jb = new JButton(test);
        jb.setBounds(0, 0, 200, 50);
        jb.setVisible(true);
        add(jb);
    }

    private void drawRectangle(Graphics g, int x, int y, int width, int height) {
        Graphics2D g2d = (Graphics2D) g;

        g2d.drawRect(x, y, width, height);
    }
}

和主要内容:

import java.awt.EventQueue;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;

import javax.swing.JFrame;


public class main extends JFrame {

    public main() {
        initUI();
    }

    private void initUI() {

        add(new Board());

        setSize(800, 600);

        setTitle("Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }    

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                main ex = new main();
                ex.setVisible(true);
            }
        });
    }
}

最佳答案

如果您尝试调整窗口大小,您将看到按钮正在生成。

发生这种情况是因为您的 paintComponent 方法,该方法在每次绘制迭代时都会被调用。

您应该将按钮添加移动到调用一次的构造函数中:

public Board() {
    ImageIcon test = new ImageIcon("nhButton.png");
    JButton jb = new JButton(test);
    jb.setBounds(0, 0, 200, 50);
    jb.setVisible(true);
    add(jb);
}

关于Java正在画2个盒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30717874/

相关文章:

java - 如何从网站上抓取全尺寸图像?

java - 如何使用 GroupLayout 来缩进?

java - 如何将 'public int' 合并到 actionPerformed 按钮中?

java - 从 AppleScript 访问 Java 应用程序中的 native 窗口?

JavaFX + Hibernate(JPA) 持久化 + Derby DB

Java Swing - 为什么 JComponent 不显示?

java - 在 Java 中是否可以应用部分类型参数?

java - 如何设置和管理 JOptionPane 的布局

java - 调用 repaint 不会导致在线程中调用 Paint 方法

java - JFrame 的 pack() 方法不起作用(java,ubuntu)