如何改变JLabel的背景颜色?

时间:2015-03-13 15:34:39

标签: java swing background jlabel setbackground

这是我的计划:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FinalsLabExam extends JFrame implements ActionListener,
      MouseListener {

   JLabel labelMc = new JLabel("McElvin R. Liceralde", SwingConstants.CENTER);

   String[] fNames = { "arial", "calibri", "tahoma", "verdana", "broadway" };
   JComboBox cfNames = new JComboBox(fNames);

   JCheckBox bold, italic;
   Font f = new Font("Times New Roman", Font.BOLD, 35);
   Font font1 = new Font("Arial", Font.BOLD, 35);
   Font font2 = new Font("Calibri", Font.BOLD, 35);
   Font font3 = new Font("Tahoma", Font.BOLD, 35);
   Font font4 = new Font("Verdana", Font.BOLD, 35);
   Font font5 = new Font("Broadway", Font.BOLD, 35);

   JMenuBar menubar = new JMenuBar();
   JMenu mFormat, mFont, mFont2, mFontName, mFontSize, mColor, mColor2, mText,
         mBColor;
   JMenuItem miArial, miCalibri, miTahoma, miVerdana, miBroadway, miBlue,
         miGreen, miRed, miYellow, miBlack, miOrange;

   JPopupMenu pumenu = new JPopupMenu();
   JToolBar tbar = new JToolBar();

   public FinalsLabExam() {
      mFormat = new JMenu("Format");
      mFont = new JMenu("Font");
      mFont2 = new JMenu("Font");
      mFontName = new JMenu("Font Name");
      mFontSize = new JMenu("Font Size");
      mColor = new JMenu("Color");
      mColor2 = new JMenu("Color");
      mText = new JMenu("Text");
      mBColor = new JMenu("Background");

      mFormat.setMnemonic('f');
      mFont.setMnemonic('f');
      mFont2.setMnemonic('f');
      mFontName.setMnemonic('n');
      mFontSize.setMnemonic('s');
      mColor.setMnemonic('c');
      mColor2.setMnemonic('c');
      mText.setMnemonic('t');
      mBColor.setMnemonic('b');

      miArial = new JMenuItem("Arial", 'a');
      miCalibri = new JMenuItem("Calibri", 'c');
      miTahoma = new JMenuItem("Tahoma", 't');
      miVerdana = new JMenuItem("Verdana", 'v');
      miBroadway = new JMenuItem("Broadway", 'w');
      // miBlue = new JMenuItem("Blue", 'l');
      miBlue = new JMenuItem((new ImageIcon("blue.jpg")) + "Blue", 'b');
      miGreen = new JMenuItem("Green", 'g');
      miRed = new JMenuItem("Red", 'r');
      miYellow = new JMenuItem("Yellow", 'y');
      miBlack = new JMenuItem("Black", 'k');
      miOrange = new JMenuItem("Orange", 'o');

      setJMenuBar(menubar);
      menubar.add(mFormat);
      mFormat.add(mFont);
      mFormat.add(mFont2);
      mFont.add(mFontName);
      mFont2.add(mFontName);
      mFontName.add(miArial);
      mFontName.add(miCalibri);
      mFontName.add(miTahoma);
      mFontName.add(miVerdana);
      mFontName.add(miBroadway);
      mFont.add(mFontSize);
      mFont2.add(mFontSize);
      mFormat.add(mColor);
      mFormat.add(mColor2);
      mColor.add(mText);
      mColor2.add(mText);
      mText.add(miBlue);
      mText.add(miGreen);
      mText.add(miRed);
      mColor.add(mBColor);
      mColor2.add(mBColor);
      mBColor.add(miYellow);
      mBColor.add(miBlack);
      mBColor.add(miOrange);

      miArial.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 2));
      miCalibri.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 2));
      miTahoma.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, 2));
      miVerdana.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 2));
      miBroadway.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, 2));

      miBlue.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, 2));
      miGreen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 2));
      miRed.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 2));
      miYellow.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 2));
      miBlack.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, 2));
      miOrange.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 2));

      addMouseListener(this);

      miArial.addActionListener(this);
      miCalibri.addActionListener(this);
      miTahoma.addActionListener(this);
      miVerdana.addActionListener(this);
      miBroadway.addActionListener(this);
      miBlue.addActionListener(this);
      miGreen.addActionListener(this);
      miRed.addActionListener(this);
      miYellow.addActionListener(this);
      miBlack.addActionListener(this);
      miOrange.addActionListener(this);

      Container pane = getContentPane();
      pane.setLayout(new BorderLayout());
      pane.setOpaque(true);

      labelMc.setBounds(350, 400, 600, 100);
      pane.add(labelMc);
      labelMc.setFont(f);

      pane.add(tbar, BorderLayout.NORTH);
      tbar.add(mFont);
      tbar.add(mColor);

      pumenu.add(mFont);
      pumenu.add(mColor);

      setDefaultCloseOperation(DISPOSE_ON_CLOSE);
      setVisible(true);
      setTitle("Finals Laboratory Exam");
      setSize(500, 200);
      setLocation(500, 300);
      setResizable(false);
   }

   public void actionPerformed(ActionEvent e) {
      if (e.getSource() == miArial)
         labelMc.setFont(font1);
      else if (e.getSource() == miCalibri)
         labelMc.setFont(font2);
      else if (e.getSource() == miTahoma)
         labelMc.setFont(font3);
      else if (e.getSource() == miVerdana)
         labelMc.setFont(font4);
      else if (e.getSource() == miBroadway)
         labelMc.setFont(font5);

      else if (e.getSource() == miBlue)
         labelMc.setForeground(Color.BLUE);
      else if (e.getSource() == miGreen)
         labelMc.setForeground(Color.GREEN);
      else if (e.getSource() == miRed)
         labelMc.setForeground(Color.RED);

      else if (e.getSource() == miYellow) {
         pane.setBackground(Color.YELLOW);
      } else if (e.getSource() == miBlack) {
         setBackground(Color.BLACK);
      } else if (e.getSource() == miOrange) {
         setBackground(Color.ORANGE);
      }
   }

   public void mouseExited(MouseEvent e) {
   }

   public void mouseEntered(MouseEvent e) {
   }

   public void mouseReleased(MouseEvent e) {

      if (e.isPopupTrigger())
         pumenu.show(e.getComponent(), e.getX(), e.getY());

   }

   public void mousePressed(MouseEvent e) {
   }

   public void mouseClicked(MouseEvent e) {
   }

   public static void main(String[] args) {
      new FinalsLabExam();
   }
}

但它不会改变背景颜色:( 当我添加pane.setBackground(Color.YELLOW);

它说......无法找到符号:( 请帮帮我:)。

感谢所有回答并帮助我的人。这是我第一次在这里发帖提问:)

2 个答案:

答案 0 :(得分:1)

您有可变范围问题。 pane变量在构造函数内声明,因此只能在其声明范围(构造函数)中可见,并且对类的其余部分保持完全不可见。要解决此问题,请将变量声明为类中的字段,而不是方法或构造函数。

例如,不是:

public class FinalsLabExam {

   public FinalsLabExam() {
      // ...
      Container pane = getContentPane():
      //....
   }

而是:

public class FinalsLabExam {
   // declare this as a field
   // declare as a JPanel, since that's what it really is
   private JPanel pane; 

   public FinalsLabExam() {
      // ...
      pane = (JPanel) getContentPane(); // cast to JPanel
      //....
   }

请注意,pane不是JLabel,而是一个容器,这会使您的问题有点混乱 - 您要设置的颜色是什么? JLabel还是容器?

答案 1 :(得分:1)

我同意@Hovercarft你只做setBackground(Color.YELLOW);而不是任何Container。所以在构造函数之外将其解析,以便可以在其他方法中访问它并执行pane.setBackground(Color.YELLOW);

以下是完整代码,以防您发现任何问题

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FinalsLabExam  extends JFrame implements ActionListener, MouseListener
    {

    JLabel labelMc = new JLabel ("McElvin R. Liceralde", SwingConstants.CENTER);

    String [] fNames = {"arial", "calibri", "tahoma", "verdana", "broadway"};
    JComboBox cfNames = new JComboBox(fNames);

    JCheckBox bold, italic;
    Font f = new Font("Times New Roman", Font.BOLD, 35);
    Font font1 = new Font("Arial", Font.BOLD, 35);
    Font font2 = new Font("Calibri", Font.BOLD, 35);
    Font font3 = new Font("Tahoma", Font.BOLD, 35);
    Font font4 = new Font("Verdana", Font.BOLD, 35);
    Font font5 = new Font("Broadway", Font.BOLD, 35);

    JMenuBar menubar = new JMenuBar();
    JMenu mFormat, mFont, mFont2, mFontName, mFontSize, mColor, mColor2, mText, mBColor;
    JMenuItem miArial, miCalibri, miTahoma, miVerdana, miBroadway, miBlue, miGreen, miRed, miYellow, miBlack, miOrange;

    JPopupMenu pumenu = new JPopupMenu();
    JToolBar tbar = new JToolBar();
    Container pane;// = getContentPane();
    public FinalsLabExam()
    {
        mFormat = new JMenu("Format");
        mFont = new JMenu("Font");
        mFont2 = new JMenu("Font");
        mFontName = new JMenu("Font Name");
        mFontSize = new JMenu("Font Size");
        mColor = new JMenu("Color");
        mColor2 = new JMenu("Color");
        mText = new JMenu("Text");
        mBColor = new JMenu("Background");

        mFormat.setMnemonic('f');
        mFont.setMnemonic('f');
        mFont2.setMnemonic('f');
        mFontName.setMnemonic('n');
        mFontSize.setMnemonic('s');
        mColor.setMnemonic('c');
        mColor2.setMnemonic('c');
        mText.setMnemonic('t');
        mBColor.setMnemonic('b');

        miArial = new JMenuItem("Arial", 'a');
        miCalibri = new JMenuItem("Calibri", 'c');
        miTahoma = new JMenuItem("Tahoma", 't');
        miVerdana = new JMenuItem("Verdana", 'v');
        miBroadway = new JMenuItem("Broadway", 'w');
        //miBlue = new JMenuItem("Blue", 'l');
        miBlue = new JMenuItem((new ImageIcon("blue.jpg")) + "Blue", 'b');
        miGreen = new JMenuItem("Green", 'g');
        miRed = new JMenuItem("Red", 'r');
        miYellow = new JMenuItem("Yellow", 'y');
        miBlack = new JMenuItem("Black", 'k');
        miOrange = new JMenuItem("Orange", 'o');

        setJMenuBar(menubar);
        menubar.add(mFormat);
            mFormat.add(mFont);
            mFormat.add(mFont2);
                mFont.add(mFontName);
                mFont2.add(mFontName);
                    mFontName.add(miArial);
                    mFontName.add(miCalibri);
                    mFontName.add(miTahoma);
                    mFontName.add(miVerdana);
                    mFontName.add(miBroadway);
                mFont.add(mFontSize);
                mFont2.add(mFontSize);
            mFormat.add(mColor);
            mFormat.add(mColor2);
                mColor.add(mText);
                mColor2.add(mText);
                    mText.add(miBlue);
                    mText.add(miGreen);
                    mText.add(miRed);
                mColor.add(mBColor);
                mColor2.add(mBColor);
                    mBColor.add(miYellow);
                    mBColor.add(miBlack);
                    mBColor.add(miOrange);

    miArial.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 2));
    miCalibri.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 2));
    miTahoma.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, 2));
    miVerdana.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 2));
    miBroadway.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, 2));

    miBlue.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, 2));
    miGreen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 2));
    miRed.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 2));
    miYellow.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 2));
    miBlack.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, 2));
    miOrange.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 2));      


    addMouseListener(this);

    miArial.addActionListener(this);
    miCalibri.addActionListener(this);
    miTahoma.addActionListener(this);
    miVerdana.addActionListener(this);
    miBroadway.addActionListener(this);
    miBlue.addActionListener(this);
    miGreen.addActionListener(this);
    miRed.addActionListener(this);
    miYellow.addActionListener(this);
    miBlack.addActionListener(this);
    miOrange.addActionListener(this);           
    pane = getContentPane();

    pane.setLayout(new BorderLayout());
    //pane.setOpaque(true);

    labelMc.setBounds(350,400,600,100);
    pane.add(labelMc);
    labelMc.setFont(f);

    pane.add(tbar, BorderLayout.NORTH);
    tbar.add(mFont);
    tbar.add(mColor);

    pumenu.add(mFont);
    pumenu.add(mColor);

    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setVisible(true);
    setTitle("Finals Laboratory Exam");
    setSize(500,200);
    setLocation(500,300);
    setResizable(false);
    }


public void actionPerformed(ActionEvent e)
{
    if (e.getSource() == miArial)
        labelMc.setFont(font1);
    else if (e.getSource() == miCalibri)
        labelMc.setFont(font2);
    else if (e.getSource() == miTahoma)
        labelMc.setFont(font3);
    else if (e.getSource() == miVerdana)
        labelMc.setFont(font4);
    else if (e.getSource() == miBroadway)
        labelMc.setFont(font5);

    else if (e.getSource() == miBlue)
        labelMc.setForeground(Color.BLUE);
    else if (e.getSource() == miGreen)
        labelMc.setForeground(Color.GREEN); 
    else if (e.getSource() == miRed)
        labelMc.setForeground(Color.RED);

    else if (e.getSource() == miYellow)
    {pane.setBackground(Color.YELLOW);}
    else if (e.getSource() == miBlack)
    {pane.setBackground(Color.BLACK);}
    else if (e.getSource() == miOrange)
    {pane.setBackground(Color.ORANGE);}

}

public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}   
public void mouseReleased(MouseEvent e)
{   

if (e.isPopupTrigger())  
    pumenu.show(e.getComponent(), e.getX(), e.getY()); 

}
public void mousePressed(MouseEvent e){}
public void mouseClicked(MouseEvent e){}

public static void main(String[] args) 
{
    new FinalsLabExam();
}
}

选择黄色后,你会得到

enter image description here