JButton 没有出现

JButton not showing up

我不明白为什么 JButton 没有出现。 做了这个by tutorial,好像一切正​​常

尝试将 setVisible 添加到各个地方 - 无论如何都没有积极的结果。

   import javax.swing.*;

import java.awt.*;
import java.util.Random;
import java.awt.event.*;

@SuppressWarnings("serial")
public class testFly extends JFrame
{

     JButton startDrawing;
     int windowWidth = 900;
     int windowHeight = 500;

     Color[] shapeColor = {Color.orange, Color.red, Color.yellow, Color.blue, Color.pink, Color.cyan, Color.black, Color.green, Color.GRAY};

     public static void main(String[] args)
     {
        new testFly();

     }
     public testFly()
     {
        this.setSize(windowWidth, windowHeight);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Flyweight Test");

        JPanel contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout());

        final JPanel drawingPanel = new JPanel();

        startDrawing = new JButton("Draw Stuff");
        startDrawing.setVisible(true);

        contentPane.add(drawingPanel, BorderLayout.CENTER);
        contentPane.add(drawingPanel, BorderLayout.SOUTH);

        startDrawing.addActionListener(new ActionListener()
        {
           public void actionPerformed(ActionEvent event)
           {
              Graphics g = drawingPanel.getGraphics();
              long startTime = System.currentTimeMillis();

              for(int i=0; i < 100000; i++)
              {
                 Rect rect = RectFactory.getRect(getRandColor());
                 rect.draw(g, getRandX(), getRandY(), getRandX(), getRandY());
                 /*
               Rect rect = new Rect(getRandColor(), getRandX(), getRandY(), getRandX(), getRandY()) ;
               rect.draw(g);
               */
              }
              long endTime = System.currentTimeMillis();
              System.out.println("That took "+(endTime - startTime));
           }
        });
        this.add(contentPane);
        this.setVisible(true);
     }
     private Color getRandColor(){
        Random randomGenerator = new Random();
        int randInt = randomGenerator.nextInt(9);
        return shapeColor[randInt];
     }
     private int getRandX()
     {
        return (int)(Math.random()*windowWidth);
     }
     private int getRandY()
     {
        return (int)(Math.random()*windowHeight);
     }

}

您还没有添加按钮。添加它。您正在添加 drawingPanel 两次。可能您正在尝试向南添加按钮

contentPane.add(drawingPanel, BorderLayout.CENTER);
contentPane.add(startDrawing, BorderLayout.SOUTH);

您需要将按钮添加到内容窗格:

contentPane.add(startDrawing, BorderLayout.NORTH); //Or wherever you want it
this.add(contentPane);
this.setVisible(true);

改变

contentPane.add(drawingPanel, BorderLayout.CENTER);
contentPane.add(drawingPanel, BorderLayout.SOUTH);

contentPane.add(drawingPanel, BorderLayout.CENTER);
contentPane.add(startDrawing, BorderLayout.SOUTH);

正如我在 之前的 评论中提到的,您添加了 drawingPanel 两次(可能是无意的)。因此,更改其中一行以添加 Jbutton,它应该可以工作。

  1. 您没有将 JButton 添加到 contentPane
  2. 您的 JButton 没有大小,所以如果您只是将它添加到 JPanel 中,它不会出现。

使用这样的东西:

startDrawing.setBounds(50, 50, 200, 200);
contentPane.add(startDrawing);

您还没有将按钮添加到任何面板

我已经在您的代码中添加了以下行并且它有效。

第 36 行:

startDrawing = new JButton("Draw Stuff");
startDrawing.setVisible(true);
drawingPanel.add(startDrawing);
drawingPanel.setVisible(true);
contentPane.add(drawingPanel, BorderLayout.CENTER);
contentPane.add(drawingPanel, BorderLayout.SOUTH);