-1

これが私のプログラムです:

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

それは...シンボルが見つかりません:(助けてください:)

答えて助けてくれるすべての人に感謝します。ここに質問を投稿するのは初めてです:)

4

2 に答える 2

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 ではなく Container であることに注意してください。これにより、質問が少し混乱します。何の色を設定しようとしていますか? JLabel かコンテナか?

于 2015-03-13T15:57:04.360 に答える