У меня проблема с моим компонентом на Java. Проблема в том, что в моем графическом интерфейсе я не вижу никаких изменений в цветах овалов. Если для флага OVF установлено значение false, они должны быть белыми, а когда флаг OVF установлен в true, они должны быть красными. Но когда я запускаю свою программу, флаг OVF установлен в fasle, и все овалы белые - это хорошо. Когда флаг меняется на true, овалы все еще белые. Я пытаюсь добавить функцию repaint(), но белые овалы все еще мигают, без изменения цвета. Вот мой код класса КОМПОНЕНТ:Frozen Java Jcomponent
import java.awt.*;
import javax.swing.*;
public class Komponent extends JComponent {
Counter counter3;
public Komponent() {
counter3 = new Counter();
}
@Override
public void paint(Graphics g) {
Graphics2D dioda = (Graphics2D) g;
int x1 = 85;
int x2 = 135;
int x3 = 35;
int x4 = 185;
int x5 = 235;
int x6 = 88;
int x7 = 138;
int x8 = 38;
int x9 = 188;
int x10 = 238;
int y_ob = 0;
int y = 3;
int width_ob = getSize().width/9;
int height_ob = getSize().height - 1;
int width = (getSize().width/9) - 6;
int height = (getSize().height - 1) - 6;
if (counter3.OVF == true) {
dioda.setColor(Color.BLACK);
dioda.fillOval(x1, y_ob, width_ob, height_ob);
dioda.fillOval(x2, y_ob, width_ob, height_ob);
dioda.fillOval(x3, y_ob, width_ob, height_ob);
dioda.fillOval(x4, y_ob, width_ob, height_ob);
dioda.fillOval(x5, y_ob, width_ob, height_ob);
dioda.setColor(Color.RED);
dioda.fillOval(x6, y, width, height);
dioda.fillOval(x7, y, width, height);
dioda.fillOval(x8, y, width, height);
dioda.fillOval(x9, y, width, height);
dioda.fillOval(x10, y, width, height);
repaint();
}
if (counter3.OVF == false) {
dioda.setColor(Color.BLACK);
dioda.fillOval(x1, y_ob, width_ob, height_ob);
dioda.fillOval(x2, y_ob, width_ob, height_ob);
dioda.fillOval(x3, y_ob, width_ob, height_ob);
dioda.fillOval(x4, y_ob, width_ob, height_ob);
dioda.fillOval(x5, y_ob, width_ob, height_ob);
dioda.setColor(Color.WHITE);
dioda.fillOval(x6, y, width, height);
dioda.fillOval(x7, y, width, height);
dioda.fillOval(x8, y, width, height);
dioda.fillOval(x9, y, width, height);
dioda.fillOval(x10, y, width, height);
repaint();
}
}
public static void main(String[] arg) {
new Komponent();
}
}
Пожалуйста, помогите (извините за мой английский);)
Дайте нам код, в котором вы меняете флаг OVF на true. –
почему новый поток, что не так с последним, кстати, есть запрос на SSCCE, ....... your effort.equalsIgnoreCase (потенциально хорошие ответы) – mKorbel
Это не проблема, ведьма изменила OVF на true, потому что когда OVF флаг в моем графическом интерфейсе. У меня есть ярлык, и когда OVF истинна, видимый ярлык установлен в true - и он работает. – Martyn