Java正在绘制2个框

时间:2015-06-08 19:52:36

标签: 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);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:2)

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

这是因为您的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);
}