0
這裏的頂部創建一個按鈕是一段代碼:無法在一個矩形
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class QuitButton extends JPanel implements ActionListener
{
static JButton button = new JButton("Panic");
Color[] colors = new Color[9];
boolean pressed = false;
public QuitButton()
{
button.addActionListener(this);
colors[0] = Color.RED;
colors[1] = Color.BLUE;
colors[2] = Color.GREEN;
colors[3] = Color.YELLOW;
colors[4] = Color.BLACK;
colors[5] = Color.PINK;
colors[6] = Color.MAGENTA;
colors[7] = Color.ORANGE;
colors[8] = Color.CYAN;
}
@Override
public void actionPerformed(ActionEvent e)
{
pressed = true;
}
public static void main(String args[])
{
JFrame frame = new JFrame("Do NOT Panic!!");
QuitButton qb = new QuitButton();
frame.add(qb);
frame.add(button);
frame.setLayout(new FlowLayout());
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
//frame.pack();
button.requestFocus();
qb.gameLoop();
}
public void gameLoop()
{
while (true)
{
repaint();
try
{
Thread.sleep(200);
} catch (Exception e)
{
}
}
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
if (pressed == false)
{
super.paint(g2d);
g2d.setColor(Color.GRAY);
g2d.fillRect(0, 0, 400, 400);
} else
{
super.paint(g2d);
Random r = new Random();
int min = 0;
int max = 8;
int index = r.nextInt(max - min) + min;
g2d.setColor(colors[index]);
g2d.fillRect(0, 0, 400, 400);
}
}
這項計劃的目的:矩形應該是灰色的前,但是當我點擊恐慌按鈕顏色應該開始改變。
請不要混淆QuitButton類的名稱。
但我的矩形不佔用整個窗口。相反,我得到這樣一個小小的矩形:http://g.recordit.co/xJAMiQu6fM.gif 我認爲這是因爲我使用的佈局,我沒有指定任何地方的按鈕將在上面。可能這就是他們並肩而坐的原因。我不熟悉GUI創建,並感謝您的幫助。
對不起,但請解釋組件的首選大小是如何爲0,0或接近它。我還想提一下,由於某些原因,我並不是在回顧這篇特定的教程。我遵循的教程看起來很生澀。他們從事情跳到事情沒有解釋太多,我發現自己只是在不做任何事情的情況下完成他們的描述 –
@IshanSrivastava:也許我錯過了你的代碼中的東西 - 我沒有我的IDE在這裏,但是*你在哪裏設置組件的preferredSize或覆蓋'getPreferredSize()'?再一次,我可能錯過了這個,所以請耐心等待。 –
@IshanSrivastava:遵循教程的最佳方式是試驗他們給你的代碼。玩它,然後嘗試將其納入你自己,我相信你會得到它。 –