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,它应该可以工作。
- 您没有将 JButton 添加到
contentPane
- 您的 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);
我不明白为什么 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,它应该可以工作。
- 您没有将 JButton 添加到
contentPane
- 您的 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);