я впервые задаю вопрос здесь.Я новичок в Java и в настоящее время прохожу курс по этому.Это назначение: «Измените вашу программу GUI кнопок, чтобы кнопки меняли цвет примерно каждую секунду, если они не были нажаты».... это все инструкции, которые мне дали.хаха, это как ничто!
Так что я знаю прямо сейчас, что когда кнопка нажата, она становится белой и перестает меняться.Технически это удовлетворяет данным инструкциям, верно?Я не думаю, что это то, что они хотят, хотя ... Плюс я просто изменяю непрозрачность, поэтому она все еще меняет цвет, вы просто не можете видеть это, верно?Так что я хотел бы знать, есть ли способ, возможно, остановить кнопку от изменения цвета, но сохранить цвет, который он уже имеет, как замораживание, вместо того, чтобы сделать его белым?У меня есть статический JFrame jf, статический логический тип, сжатый вне main и все необходимые операции импорта.Моя функция getColor () просто возвращает случайный цвет.Спасибо за помощь / совет !!
public static void main(String[] args) {
jf = new JFrame("Homework 2");//constructed
jf.setSize(400,400);//sets window size
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//closes program
jf.setLayout(new GridLayout(2,4));
ArrayList<JButton> buttons = new ArrayList<JButton>();//array of button
pressed = true;
for(int i=1; i <= 8; i++) { //creates 8 buttons
JButton jb = new JButton();
jb.setText("Button " + i);
jb.setOpaque(pressed);
jb.setBorderPainted(false);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton theButton = (JButton)e.getSource();
theButton.setOpaque(!pressed);//makes it white if it has been clicked
}
});
buttons.add(jb);//add the button to the array
jf.add(jb);//adding to frame
}
jf.setVisible(true);//makes the window appear
while(true) {
for (JButton button : buttons){
button.setBackground(getColor());//change colors
}
try {
Thread.sleep(1000);//unless
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}