2015-03-13 156 views
-1

這是我的計劃:如何更改JLabel的背景顏色?

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);

它說對象沒有找到符號:( 請幫我:)

謝謝所有誰將會回答和幫助我。這是我第一次在這裏張貼問題:)

+3

請出示**完整的錯誤消息**和足夠的代碼讓我們充分理解你的錯誤。此外,你必須確保你的JLabel是不透明的,通常是通過調用'myLabel.setOpaque(真);如果'是myLabel顯示任何背景顏色。 – 2015-03-13 15:35:05

+0

C:\用戶\宏基\文件\ JCreator的LE \ MyProjects下\ FinalsLab \ SRC \ FinalsLab.java:168:錯誤:找不到符號 {pane.setBackground(Color.YELLOW);} ^ 符號:可變窗格 位置:類FinalsLab 注:C:\用戶\宏基\文檔\ JCreator的LE \ MyProjects下\ FinalsLab的\ src \ FinalsLab.java使用未經檢查或不安全的操作。 注意:使用-Xlint重新編譯:取消選中以獲取詳細信息。 1錯誤 – 2015-03-13 15:37:24

+1

你做'label.setOpaque(真);'?參見[類似](http://stackoverflow.com/questions/2380314/how-do-i-set-a-jlabels-background-color) – silentprogrammer 2015-03-13 15:37:39

回答

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

我同意@Hovercarft你正在做的只有setBackground(Color.YELLOW);不適用於任何容器。因此在構造函數之外減少它,以便它可以在其他方法中訪問,並執行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

+0

@BladeMatrix如果你有你的答案,然後考慮接受它,讓其他具有相同問題應該知道問題得到了答案。 – silentprogrammer 2015-03-14 05:09:56