2015-12-17 5 views
0

Я пытаюсь запустить эту программу для своего испанского учителя, и я хочу изменить фон первого JFrame. Вот.Попытка изменить фон JFrame из другого класса

package com.jaketherey; 

import java.awt.Color; 
import java.awt.Image; 
import java.awt.Toolkit; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class Inglés { 

public static void main(String[] args) { 

    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 

     JFrame frame = new switcherContent(); 

     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(950, 850); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.setTitle("Inglés"); 
     frame.getContentPane().setBackground(Color.GREEN); 
     } 

    }); 

} 

} 

Это класс, с которого я хочу изменить его, в Слушателе действий для кнопки внизу.

package com.jaketherey; 

import java.awt.Color; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.SwingConstants; 

public class switcherContent extends JFrame { 

public switcherContent(){ 

    //Constrains 

    GridBagConstraints constr = new GridBagConstraints(); 

    //Layout 

    GridBagLayout gBL = new GridBagLayout(); 

    //Buttons 

    final JButton buttonSwitch = new JButton("Switch"); 

    //JLabel 

    final JLabel phrase1 = new JLabel("Inglés"); 
    phrase1.setHorizontalAlignment(SwingConstants.CENTER); 
    phrase1.setForeground(Color.red); 
    phrase1.setFont (phrase1.getFont().deriveFont (150.0f)); 

    final JLabel phrase2 = new JLabel("Permitido"); 
    phrase2.setHorizontalAlignment(SwingConstants.CENTER); 
    phrase2.setForeground(Color.red); 
    phrase2.setFont (phrase2.getFont().deriveFont (150.0f)); 

    //Set Layout// 
    setLayout(gBL); 

    //Constraints & Adding// 

    constr.gridx=0; 
    constr.gridy=1; 
    constr.gridheight=1; 
    constr.gridwidth=1; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    gBL.setConstraints(buttonSwitch, constr); 
    add(buttonSwitch); 

    constr.gridx=0; 
    constr.gridy=0; 
    constr.gridheight=1; 
    constr.gridwidth=1; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    constr.fill=constr.BOTH; 
    gBL.setConstraints(phrase1, constr); 
    add(phrase1); 

    constr.gridx=0; 
    constr.gridy=2; 
    constr.gridheight=1; 
    constr.gridwidth=1; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    constr.weightx=1.0; 
    constr.weighty=1.0; 
    constr.fill=constr.BOTH; 
    gBL.setConstraints(phrase2, constr); 
    add(phrase2); 

    buttonSwitch.addActionListener(new ActionListener() { 

     @Override 

     public void actionPerformed(ActionEvent e) { 
      String check = phrase2.getText(); 

      if(check.equals("Permitido")){ 
      phrase2.setText("Prohibido"); 

      phrase1.setForeground(Color.green); 
      phrase2.setForeground(Color.green); 

      //Set Background to RED 

      } 
      else if(check.equals("Prohibido")){ 
      phrase2.setText("Permitido"); 

      phrase1.setForeground(Color.red); 
      phrase2.setForeground(Color.red); 

      //Set Background to GREEN 

      }; 

     } 

    }); 

} 

} 

Спасибо за любую помощь!

ответ

3

Извините, я неверно сформулировал ваш вопрос. Все, что вам нужно сделать, это вызов getContentPane() из вашего ActionListener

 public void actionPerformed(ActionEvent e) { 
      String check = phrase2.getText(); 

      if (check.equals("Permitido")) { 
       phrase2.setText("Prohibido"); 

       phrase1.setForeground(Color.green); 
       phrase2.setForeground(Color.green); 

       getContentPane().setBackground(Color.RED);// !! 
+0

Большое вам спасибо! Я пытался понять это на пару дней. Благодаря! –

3

Я нашел способ сделать то, что вы просите. Я добавил следующий переменный класс в switcherContent:

Container contentPane; 

В конструкторе я добавил следующую строку:

contentPane = this.getContentPane(); 

Затем в действие слушателя, я добавил следующую строку:

contentPane.setBackground(Color.red); 
1

просто добавьте это.getContentPane(). SetBackground (Color.GREEN) внутри кнопка action слушатель;

«это» относится к вашей Jframe: switcherContent внутри своего класса. Вы можете вызвать этот метод для изменения цвета фона из любого места внутри вашего класса switcherContent. Не только в методе actionListener().

Смежные вопросы