简体   繁体   中英

Error while using swing

I'm trying to create panel with some button which would enables disable the other button What's the problem with the codes its compiled perfectly but while running shows the error. I'm not able to debug this.

Exception in thread "main" java.lang.NoClassDefFoundError: buttondemo (wrong nam
e: components/buttondemo)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)

Here's the code

import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.ImageIcon;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class buttondemo extends JPanel implements ActionListener {
    private JButton b1, b2, b3;

    public buttondemo() {
        ImageIcon Left = createImageIcon("C:\\Users\\nco\\Desktop\\Swing\\components\\images\\left.png");
        ImageIcon Right = createImageIcon("C:\\Users\\nco\\Desktop\\Swing\\components\\images\\right.jpg");
        ImageIcon Middle = createImageIcon("C:\\Users\\nco\\Desktop\\Swing\\components\\images\\middle.jpg");
        b1 = new JButton("Disable middle button", Left);
        b1.setVerticalTextPosition(AbstractButton.CENTER);
        b1.setMnemonic(KeyEvent.VK_D);// shortcut D
        b1.setActionCommand("disable");
        b2 = new JButton("middle button", Middle);
        b2.setVerticalTextPosition(AbstractButton.BOTTOM);
        b2.setVerticalTextPosition(AbstractButton.CENTER);
        b3.setMnemonic(KeyEvent.VK_M);// shortcut M
        b3 = new JButton("Enable middle button", Right);
        b3.setVerticalTextPosition(AbstractButton.RIGHT);
        b3.setMnemonic(KeyEvent.VK_E);// shortcut E
        b3.setActionCommand("enable");
        b3.setEnabled(false);
        b1.addActionListener(this);
        b3.addActionListener(this);
        b1.setToolTipText("click on the middle button to " + "disable middle");
        b3.setToolTipText("click on the middle button to " + "enable middle");
        b2.setToolTipText("click disable");
        add(b1);
        add(b2);
        add(b3);
    }

    public void actionPerformed(ActionEvent e) {
        if ("disable".equals(e.getActionCommand())) {
            b2.setEnabled(false);
            b1.setEnabled(false);
            b3.setEnabled(true);
        } else {
            b2.setEnabled(true);
            b1.setEnabled(true);
            b3.setEnabled(false);
        }
    }

    protected static ImageIcon createImageIcon(String path) {
        java.net.URL img = buttondemo.class.getResource(path);
        if (img != null) {
            return new ImageIcon(img);
        } else {
            System.err.println("could not find path" + path);
            return null;
        }
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Button demso");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buttondemo Contentpane = new buttondemo();
        Contentpane.setOpaque(true);
        frame.setContentPane(Contentpane);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

}

在此输入图像描述

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

public class buttondemo extends JPanel implements ActionListener {

    private JButton b1, b2, b3;

    public buttondemo() {
        Icon Left = UIManager.getIcon("OptionPane.errorIcon");
        Icon Right = UIManager.getIcon("OptionPane.informationIcon");
        Icon Middle = UIManager.getIcon("OptionPane.warningIcon");
        b1 = new JButton("Disable middle button", Left);
        b1.setVerticalTextPosition(SwingConstants.TOP);
        b1.setHorizontalTextPosition(SwingConstants.CENTER);
        b1.setMnemonic(KeyEvent.VK_D);//shortcut D
        b1.setActionCommand("disable");
        b2 = new JButton("middle button", Middle);
        b2.setVerticalTextPosition(SwingConstants.BOTTOM);
        b2.setHorizontalTextPosition(SwingConstants.LEFT);
        b3 = new JButton("Enable middle button", Right);
        b3.setMnemonic(KeyEvent.VK_M);//shortcut M
        b2.setVerticalTextPosition(SwingConstants.EAST);
        b2.setHorizontalTextPosition(SwingConstants.CENTER);
        b3.setActionCommand("enable");
        b3.setEnabled(false);
        b1.addActionListener(this);
        b3.addActionListener(this);
        b1.setToolTipText("click on the middle button to " + "disable middle");
        b3.setToolTipText("click on the middle button to " + "enable middle");
        b2.setToolTipText("click disable");
        add(b1);
        add(b2);
        add(b3);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if ("disable".equals(e.getActionCommand())) {
            b2.setEnabled(false);
            b1.setEnabled(false);
            b3.setEnabled(true);
        } else {
            b2.setEnabled(true);
            b1.setEnabled(true);
            b3.setEnabled(false);
        }
    }

    protected static ImageIcon createImageIcon(String path) {
        java.net.URL img = buttondemo.class.getResource(path);
        if (img != null) {
            return new ImageIcon(img);
        } else {
            System.err.println("could not find path" + path);
            return null;
        }
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Button demso");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buttondemo Contentpane = new buttondemo();
        Contentpane.setOpaque(true);
        frame.setContentPane(Contentpane);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String args[]) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

EDIT

Java6 on WinXP caused the with same exception

java.lang.NoClassDefFoundError: JButton/ButtonDemo Caused by: java.lang.ClassNotFoundException: JButton.ButtonDemo at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: JButton.ButtonDemo. Program will exit. Exception in thread "main" Java Result: 1

  • but have to use the proper private to use instead of protected static ImageIcon createImageIcon(String path) { caused am exception

@see

private ImageIcon createImageIcon(String path) {
    java.net.URL img = ButtonDemo.class.getResource(path);
    if (img != null) {
        return new ImageIcon(img);
    } else {
        System.err.println("could not find path" + path);
        return null;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM