我试图让这个程序为我的西班牙语老师运行,我想改变第一个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);
}
});
}
}
这是我要更改它的类,在底部按钮的Action Listener中。
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
};
}
});
}
}
感谢您的帮助!
答案 0 :(得分:3)
抱歉,我误解了你的问题。您所要做的就是从ActionListener中调用getContentPane()
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);// !!
答案 1 :(得分:3)
我找到了一种方法来做你所要求的。我在switcherContent
中添加了以下类变量:
Container contentPane;
在构造函数中,我添加了以下行:
contentPane = this.getContentPane();
然后在你的动作监听器中,我添加了以下行:
contentPane.setBackground(Color.red);
答案 2 :(得分:1)
只需在按钮动作侦听器中添加 this.getContentPane()。setBackground(Color.GREEN);
'this'指的是你的Jframe:switcherContent本身在它的类中。您可以调用此方法来更改切换器内容类中任何位置的背景颜色。不仅在actionListener()方法中。