3

私はネットビーンズでアプリを開発しています。マウス イベント (MouseEntered など) で変更したいボタンがいくつかあります。MouseEntered では、次のコードがあります。

private void jButton5MouseEntered(java.awt.event.MouseEvent evt) {
      jButton5.setIcon(new ImageIcon(getClass().getResource("resources/menu2.png")));
       jLabel1.setForeground(Color.RED);
}

そのボタンのアイコンを変更したいし、jLabel1 の前景色も変更したい。そのjLabel1に問題があります。変わりません。なんで?ありがとうございました

4

5 に答える 5

4

ここではうまく機能しているようです。

ニンバス ラベルの色

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

public class NimbusLabelColor {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                try {
                    for ( UIManager.LookAndFeelInfo info : 
                            UIManager.getInstalledLookAndFeels()) {
                        if ("Nimbus".equals(info.getName())) {
                            System.out.println("Nimbus found!");
                            UIManager.setLookAndFeel(info.getClassName());
                            break;
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                JPanel gui = new JPanel(new GridLayout(3,1,2,2));

                MouseAdapter adapter = new MouseAdapter() {
                    @Override
                    public void mouseEntered(MouseEvent me) {
                        Object c = me.getSource();
                        // do with extreme caution
                        JLabel l = (JLabel)c;
                        l.setForeground(Color.RED);
                    }

                    @Override
                    public void mouseExited(MouseEvent me) {
                        Object c = me.getSource();
                        // do with extreme caution
                        JLabel l = (JLabel)c;
                        l.setForeground(Color.BLUE);
                    }
                };

                for (int ii=0; ii<3; ii++) {
                    JLabel l = new JLabel("Float Me!");
                    l.addMouseListener(adapter);
                    gui.add(l);
                }

                JOptionPane.showMessageDialog(null, gui);
            }
        };
        // Swing GUIs should be created and updated on the EDT
        SwingUtilities.invokeLater(r);
    }
}
于 2012-12-25T01:40:19.617 に答える
4
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Main extends JFrame {
JLabel label1;
JLabel label2;
public Main() {
    super("JLabel Demo");
    setSize(600, 100);

    JPanel content = new JPanel(new BorderLayout());

    label1 = new JLabel("Java2s");
    label1.setFont(new Font("Helvetica", Font.BOLD, 18));
    label1.setOpaque(true);
    label1.setBackground(Color.white);
    content.add(label1, BorderLayout.WEST);

    ImageIcon image = new ImageIcon(getClass().getResource("items.gif"));
    label2 = new JLabel("Java2s", image, SwingConstants.RIGHT);
    label2.setVerticalTextPosition(SwingConstants.TOP);
    label2.setOpaque(true);
    label2.setBackground(Color.white);
    content.add(label2, BorderLayout.CENTER);

    JButton btn = new JButton("Change");
    btn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {
            label1.setForeground(Color.RED);
            label2.setIcon(new ImageIcon(getClass().getResource("menu_arrow.gif")));
        }

    });
    content.add(btn, BorderLayout.EAST);

    getContentPane().add(content);
    setVisible(true);
}

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

上記のコードを試してください。レイアウトは見栄えがよくありませんが、これで問題を解決できると思います。

于 2012-12-24T18:06:38.123 に答える
0

それほど長いコードを実行する必要はありません。Mouse Entered イベントを使用するシンプルで望ましいオプションが 1 つあります。次のように

private void jMenu1MouseEntered(java.awt.event.MouseEvent evt) {                                    


        this.jMenu1.setBackground(Color.red);
        this.jMenu1.setForeground(Color.red);
        System.out.println("Mouse Entered in Manu 1");
    }

これは役に立ちます。

于 2013-10-26T05:50:51.883 に答える
0

マウス イベントによってラベル コンポーネントを変更する方法を示す簡単なアプリを作成します。ボタンには、MouseListener インターフェイスを実装する内部クラスであるマウス リスナーを追加しました。それを補うために、mouseExited と mouseEntered の 2 つのメソッドを実装します。最初の方法は、マウスがボタン領域を出ると、ラベルの初期状態が元の状態に戻ることを示すために使用します。2 番目の方法は、マウスがボタン領域にあるときにラベルの変更を表示します。

それがあなたやもっと誰かに役立つことを願っています。

public class MouseChangeLabel {

    private JFrame frame;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MouseChangeLabel window = new MouseChangeLabel();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public MouseChangeLabel() {
        initialize();
    }

    private void initialize() {
        frame = new JFrame();
        frame.setBounds(0, 0, 200, 150);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JLabel lblLabel1 = new JLabel("Label 1 without Panel");
        lblLabel1.setHorizontalAlignment(SwingConstants.CENTER);
        lblLabel1.setBounds(30, 10, 150, 30);
        lblLabel1.setForeground(Color.BLACK);
        frame.getContentPane().add(lblLabel1);

        JButton btnButton = new JButton("Button 1");
        btnButton.setBounds(30, 50, 150, 30);
        btnButton.addMouseListener(new MouseListener() {

            @Override
            public void mouseReleased(MouseEvent e) {
                // TODO Auto-generated method stub
            }

            @Override
            public void mousePressed(MouseEvent e) {
                // TODO Auto-generated method stub
            }

            @Override
            public void mouseExited(MouseEvent e) {
                // TODO Auto-generated method stub
                lblLabel1.setForeground(Color.BLACK);
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                // TODO Auto-generated method stub
                lblLabel1.setForeground(Color.RED);     
            }

            @Override
            public void mouseClicked(MouseEvent e) {
                // TODO Auto-generated method stub
            }
        });
        frame.getContentPane().add(btnButton);
    }
}
于 2015-05-10T15:08:22.330 に答える
-1

私はそれを netbeans で開発しています。つまり、jFrame フォームを作成したとき、そこには事前に生成されたコードがすでにいくつかありました。ここにあります:

import java.awt.Color;
import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
 *
 * @author Svist
 */
public class OsvetlenieForm extends javax.swing.JFrame {

/**
 * Creates new form OsvetlenieForm
 */
public OsvetlenieForm() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jLabel5 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jButton4 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton5 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    setTitle("Osvetlenie");
    setMinimumSize(new java.awt.Dimension(900, 600));
    setResizable(false);
    getContentPane().setLayout(null);

    jLabel5.setFont(new java.awt.Font("Tunga", 0, 18)); // NOI18N
    jLabel5.setForeground(new java.awt.Color(255, 255, 255));
    jLabel5.setText("Pohodlie");
    getContentPane().add(jLabel5);
    jLabel5.setBounds(10, 320, 60, 20);

    jLabel4.setFont(new java.awt.Font("Tunga", 0, 18)); // NOI18N
    jLabel4.setForeground(new java.awt.Color(255, 255, 255));
    jLabel4.setText("Bezpecnost");
    getContentPane().add(jLabel4);
    jLabel4.setBounds(10, 280, 90, 20);

    jLabel3.setFont(new java.awt.Font("Tunga", 0, 18)); // NOI18N
    jLabel3.setForeground(new java.awt.Color(255, 255, 255));
    jLabel3.setText("Kúrenie");
    getContentPane().add(jLabel3);
    jLabel3.setBounds(10, 240, 70, 20);

    jLabel2.setFont(new java.awt.Font("Tunga", 0, 18)); // NOI18N
    jLabel2.setForeground(new java.awt.Color(55, 117, 121));
    jLabel2.setText("Osvetlenie");
    getContentPane().add(jLabel2);
    jLabel2.setBounds(10, 200, 80, 14);

    jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/nic.png"))); // NOI18N
    jButton4.setBorder(null);
    jButton4.setBorderPainted(false);
    jButton4.setContentAreaFilled(false);
    jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseEntered(java.awt.event.MouseEvent evt) {
            jButton4MouseEntered(evt);
        }
        public void mouseExited(java.awt.event.MouseEvent evt) {
            jButton4MouseExited(evt);
        }
    });
    getContentPane().add(jButton4);
    jButton4.setBounds(0, 310, 180, 40);

    jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/nic.png"))); // NOI18N
    jButton3.setBorder(null);
    jButton3.setBorderPainted(false);
    jButton3.setContentAreaFilled(false);
    jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseEntered(java.awt.event.MouseEvent evt) {
            jButton3MouseEntered(evt);
        }
        public void mouseExited(java.awt.event.MouseEvent evt) {
            jButton3MouseExited(evt);
        }
    });
    getContentPane().add(jButton3);
    jButton3.setBounds(0, 270, 180, 40);

    jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/nic.png"))); // NOI18N
    jButton5.setBorder(null);
    jButton5.setBorderPainted(false);
    jButton5.setContentAreaFilled(false);
    jButton5.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseEntered(java.awt.event.MouseEvent evt) {
            jButton5MouseEntered(evt);
        }
        public void mouseExited(java.awt.event.MouseEvent evt) {
            jButton5MouseExited(evt);
        }
    });
    getContentPane().add(jButton5);
    jButton5.setBounds(0, 190, 177, 39);

    jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/nic.png"))); // NOI18N
    jButton2.setBorder(null);
    jButton2.setBorderPainted(false);
    jButton2.setContentAreaFilled(false);
    jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseEntered(java.awt.event.MouseEvent evt) {
            jButton2MouseEntered(evt);
        }
        public void mouseExited(java.awt.event.MouseEvent evt) {
            jButton2MouseExited(evt);
        }
    });
    getContentPane().add(jButton2);
    jButton2.setBounds(0, 230, 177, 39);

    jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/menu.jpg"))); // NOI18N
    getContentPane().add(jLabel1);
    jLabel1.setBounds(0, 0, 900, 600);

    pack();
    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    java.awt.Dimension dialogSize = getSize();
    setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
}// </editor-fold>

private void jButton2MouseEntered(java.awt.event.MouseEvent evt) {
   jButton2.setIcon(new ImageIcon(getClass().getResource("resources/menu2.png")));


}

private void jButton2MouseExited(java.awt.event.MouseEvent evt) {
    jButton2.setIcon(new ImageIcon(getClass().getResource("resources/nic.png")));
}

private void jButton3MouseEntered(java.awt.event.MouseEvent evt) {
    jButton3.setIcon(new ImageIcon("src/menu_over.png"));
}

private void jButton3MouseExited(java.awt.event.MouseEvent evt) {
    jButton3.setIcon(new ImageIcon("src/menu2.png"));
}

private void jButton4MouseEntered(java.awt.event.MouseEvent evt) {
    jButton4.setIcon(new ImageIcon("src/menu_over.png"));
}

private void jButton4MouseExited(java.awt.event.MouseEvent evt) {
    jButton4.setIcon(new ImageIcon("src/menu2.png"));
}

private void jButton5MouseEntered(java.awt.event.MouseEvent evt) {
      jButton5.setIcon(new ImageIcon(getClass().getResource("resources/menu2.png")));
       jLabel1.setForeground(Color.RED);
}

private void jButton5MouseExited(java.awt.event.MouseEvent evt) {
     jButton5.setIcon(new ImageIcon(getClass().getResource("resources/nic.png")));
}

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /*
     * Set the Nimbus look and feel
     */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /*
     * If Nimbus (introduced in Java SE 6) is not available, stay with the
     * default look and feel. For details see
     * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(OsvetlenieForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(OsvetlenieForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(OsvetlenieForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(OsvetlenieForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /*
     * Create and display the form
     */
    java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
            new OsvetlenieForm().setVisible(true);
        }
    });
}
// Variables declaration - do not modify
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
// End of variables declaration

private static class ComponentImpl extends Component {

    public ComponentImpl() {
    }
}
}

ボタン用の「アイコン」画像が 1 つあります。このコードで、「MouseEntered」(これはうまくいきます) のときにボタンの「アイコン」イメージを変更し、同時に「jLabel1」のテキストの色を変更します。これは「foreground(color)」パラメーターです。(この部分は機能していません)。

于 2012-12-24T19:46:54.767 に答える