Я постараюсь помочь вам встать на правильный путь: -)
Возможно, вы уже знаете это, но если вы не используете IDE, я рекомендую использовать appletviewer для разработкиваши апплеты вместо браузера.Просто пища для размышлений: -)
Прежде всего, Toader Mihai Claudiu предложение верно.Измените
do
{
g.drawLine (35, 50, 570, 50);
g.drawLine (35, 50, 250, 0);
g.drawLine (250, 0, 570, 50);
g.drawRect (50, 50, 500, 350);
g.fillRect (100, 75, 80, 80);
g.fillRect (400, 75, 80, 80);
g.fillRect (240, 200, 125, 200);
}
while (closeDoors = true);
if (closeDoors = false);
{
на
if (closeDoors)
{
g.drawLine (35, 50, 570, 50);
g.drawLine (35, 50, 250, 0);
g.drawLine (250, 0, 570, 50);
g.drawRect (50, 50, 500, 350);
g.fillRect (100, 75, 80, 80);
g.fillRect (400, 75, 80, 80);
g.fillRect (240, 200, 125, 200);
}
else
{
В противном случае вы будете рисовать, пока closeDoors имеет значение true.Вам просто нужно нарисовать один раз.Java попросит вас снова рисовать, когда это необходимо (например, когда вы вызываете repaint ()).
Кроме того, установите closeDoors
в качестве member переменной.Другими словами, имейте:
public class color extends JApplet
{
public boolean closeDoors = false;
И когда вы переключаете значение closeDoors в прослушивателе кликов, вы можете упростить его как:
int x = e.getX();
int y = e.getY();
if(x>330 && x<280 && y>20 && y<20)
{
closeDoors = !closeDoors;
repaint();
}
Это будет, когда вы нажмете ввашей конкретной области, инвертировать значение closeDoors.Другими словами, если closeDoors
равно true
, оно будет установлено на false
, и наоборот.
Обратите внимание, ваш код if(x>330 && x<280 && y>20 && y<20)
, вероятно, вообще не будет работать, так как y
не может быть больше 20 и меньше 20 одновременно.Я позволю вам поиграть с этим, чтобы выяснить, что работает: -).
Надеюсь, это поможет.
Просто небольшая деталь, но вы, вероятно, должны назвать свой класс Color
вместо color
, чтобы следовать стандарту Java по именованию или назвать его как-нибудь иначе, если вы не хотите конфликтовать с java.awt.Color .