Изменение цвета JFrame - PullRequest
       15

Изменение цвета JFrame

0 голосов
/ 17 апреля 2019

У меня есть JFrame, который появляется в конце таймера.Код ниже выскакивает кадр и звук.Цвет рамки задается из меню, а затем присваивается рамке.Мне нужно, чтобы рамка чередовалась между цветом по умолчанию и цветом, который я выбираю в меню.Заранее спасибо

new Thread(new Runnable()
      {
        public void run()
        {
            JFrame frame= new JFrame(); 
    frame.setVisible(true);
            frame.setSize(600, 400);
            frame.setLocation(200, 200);
            frame.setTitle("ALARM");
            frame.getContentPane().setBackground(GUI.this.timerPanel.colorButton.getBackground());  // *This is the source for the color i select in the menu* 
            JLabel welcome = new JLabel("",SwingConstants.CENTER);
            welcome.setFont(new Font("Serif", Font.PLAIN, 48));
            welcome.setText("ALARM ALARM ALARM");
            frame.add(welcome);
            new SoundEngine().playSound();





        }
      })

        .start();

1 Ответ

1 голос
/ 17 апреля 2019

Swing не Thread дружественный, попробуйте узнать о SwingUtility.InvokeLater.

Чтобы изменить Color используйте JFrame.setBackGround(color).

Теперь, как будетВы переключаетесь?

Для меня лучший способ - создать Class с именем Util.

public class Util{
     private static int ser=0;
     private static Color[] backColor=new Color[]{Color.red,Color.green,Color.white};
     public static void setBC(JFrame frame){
         frame.setBackGround(backColor[ser++%backColor.lenght]);
}

Теперь в вашем расширенном JFrame классеили раздел просто позвоните Util.setBC(frame).

Он меняется между этими тремя цветами, вы можете добавить больше или даже удалить соем по своему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...