Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing单选按钮小程序的疑难解答_Java_Swing_Applet_Radio - Fatal编程技术网

Java Swing单选按钮小程序的疑难解答

Java Swing单选按钮小程序的疑难解答,java,swing,applet,radio,Java,Swing,Applet,Radio,我必须为学校作业创建一个Swing小程序,并获得了一个链接()以查看各种Swing教程,并使用其中一个创建一个独特的Java小程序。我选择遵循如何使用单选按钮教程的代码。我把代码通读一遍,然后在修改东西的时候把它打出来,这样它们就可以和我的图片相匹配了。我的密码是 package components; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OSButtons extend

我必须为学校作业创建一个Swing小程序,并获得了一个链接()以查看各种Swing教程,并使用其中一个创建一个独特的Java小程序。我选择遵循如何使用单选按钮教程的代码。我把代码通读一遍,然后在修改东西的时候把它打出来,这样它们就可以和我的图片相匹配了。我的密码是

package components;

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

public class OSButtons extends JPanel implements ActionListener {

    static String windowsString = "Windows";
    static String linuxString = "Linux";
    static String macString = "Mac";

    JLabel picture;

    public OSButtons() {
        super(new BorderLayout());

        JRadioButton windowsButton = new JRadioButton(windowsString);
        windowsButton.setMnemonic(KeyEvent.VK_W);
        windowsButton.setActionCommand(windowsString);
        windowsButton.setSelected(true);

        JRadioButton linuxButton = new JRadioButton(linuxString);
        linuxButton.setMnemonic(KeyEvent.VK_L);
        linuxButton.setActionCommand(linuxString);

        JRadioButton macButton = new JRadioButton(macString);
        macButton.setMnemonic(KeyEvent.VK_M);
        macButton.setActionCommand(macString);

        ButtonGroup group = new ButtonGroup();
        group.add(windowsButton);
        group.add(linuxButton);
        group.add(macButton);

        windowsButton.addActionListener(this);
        linuxButton.addActionListener(this);
        macButton.addActionListener(this);

        picture = new JLabel(createImageIcon("images/" + windowsString + ".gif"));
        picture.setPreferredSize(new Dimension(200, 150));

        JPanel radioPanel = new JPanel(new GridLayout(0, 1));
        radioPanel.add(windowsButton);
        radioPanel.add(linuxButton);
        radioPanel.add(macButton);

        add(radioPanel, BorderLayout.LINE_START);
        add(picture, BorderLayout.CENTER);
        setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
    }

    public void actionPerformed(ActionEvent e) {
        picture.setIcon(createImageIcon("images/" + e.getActionCommand() + ".gif"));
    }

    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = OSButtons.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("OSButtons");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JComponent newContentPane = new RadioButtonDemo();
        newContentPane.setOpaque(true);
        frame.setContentPane(newContentPane);

        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
我希望这是可读的。无论如何,我编译了代码,它出现了以下错误:

我真的不知道如何从这里开始解决这些问题,这个任务有点强加给我,我必须完全靠自己研究Swing、SWT和AWT。如果您能提供任何帮助,我们将不胜感激。

改变

picture = newJLabel(createImageIcon("images/"+ windowsString + ".gif"));

改变

radiopanel.add(macButton);

Java区分大小写,变量名大小写必须匹配

这个

JComponent newContentPane = new RadioButtonDemo();
我怀疑是复制/粘贴错误。您更改了原始代码的
名称,但忘记了更改对它的任何引用

试试看

JComponent newContentPane = new OSButtons();
反而

更新

好的。假设您的源文件位于
C:\Users\Keith\Desktop\components

在命令提示符下,您可以使用如下方式编译它们

C:\> cd C:\Users\Keith\Desktop
C:\Users\Keith\Desktop> javac components.OSButtons.java
C:\Users\Keith\Desktop> java components.OSButtons
包名和类文件的预期目录之间存在直接关联。

更改

picture = newJLabel(createImageIcon("images/"+ windowsString + ".gif"));

改变

radiopanel.add(macButton);

Java区分大小写,变量名大小写必须匹配

这个

JComponent newContentPane = new RadioButtonDemo();
我怀疑是复制/粘贴错误。您更改了原始代码的
名称,但忘记了更改对它的任何引用

试试看

JComponent newContentPane = new OSButtons();
反而

更新

好的。假设您的源文件位于
C:\Users\Keith\Desktop\components

在命令提示符下,您可以使用如下方式编译它们

C:\> cd C:\Users\Keith\Desktop
C:\Users\Keith\Desktop> javac components.OSButtons.java
C:\Users\Keith\Desktop> java components.OSButtons


包名和类文件的预期目录之间存在直接关联。

您的编程过程已关闭。如果您不能使用一个IDE来立即通知您编译错误,那么您应该尽早编译代码,并在添加代码时经常编译,可能在每1-2行代码之后。这里的关键是在修复所有编译错误之前不要添加任何新代码。否则,你可能会像我们在这里看到的那样,以一大堆错误告终。我没有为此使用IDE,我只是像个野蛮人一样在记事本上输入了它。这是我的第一个Java任务,所以我想我会在没有IDE的情况下尝试它。不管怎样,过程是一样的:1)尽早修复所有编译错误。2) 永远不要将好代码添加到坏代码中。3) 研究并从所有错误消息中学习。“Swing、SWT和AWT”专注于Swing,忽略SWT,除非它是明确的要求,忽略所有AWT组件(这是我的建议)。关于AWT/Swing,请参阅上的这个答案,因为有很多很好的理由可以放弃使用AWT组件。我明白了。我从来没有被指示在进行过程中进行编译(我想这在IDE中是不必要的)。我所要做的就是我的在线课程,不幸的是,这些课程的指导非常糟糕。谢谢你的意见,我会记住这一点;还有一个IDE。你的编程过程已经结束了。如果您不能使用一个IDE来立即通知您编译错误,那么您应该尽早编译代码,并在添加代码时经常编译,可能在每1-2行代码之后。这里的关键是在修复所有编译错误之前不要添加任何新代码。否则,你可能会像我们在这里看到的那样,以一大堆错误告终。我没有为此使用IDE,我只是像个野蛮人一样在记事本上输入了它。这是我的第一个Java任务,所以我想我会在没有IDE的情况下尝试它。不管怎样,过程是一样的:1)尽早修复所有编译错误。2) 永远不要将好代码添加到坏代码中。3) 研究并从所有错误消息中学习。“Swing、SWT和AWT”专注于Swing,忽略SWT,除非它是明确的要求,忽略所有AWT组件(这是我的建议)。关于AWT/Swing,请参阅上的这个答案,因为有很多很好的理由可以放弃使用AWT组件。我明白了。我从来没有被指示在进行过程中进行编译(我想这在IDE中是不必要的)。我所要做的就是我的在线课程,不幸的是,这些课程的指导非常糟糕。谢谢你的意见,我会记住这一点;还有一个IDE。非常感谢,我这里的大多数错误似乎都是由于没有仔细阅读我的代码造成的。这使它能够成功编译,但我现在在尝试运行它时遇到了这个问题:因为类文件位于包中,所以需要执行它。将目录更改一级(
cd..
),然后尝试
java组件。OSButtons
instead更改了目录,使其成为C:\Users\Keith而不是以前使用的C:\Users\Keith\Desktop,并运行上面的内容,我收到“错误:找不到或加载主类组件.OSButtons”。我是不是编错了?我的编译方法是打开cmd并在C:\Users\Keith\Desktop目录中键入“javac OSButtons.java”。我能做些什么来感谢您吗?有销售代表制度吗?我是新来的,所以我还不知道这个网站上的每件事是如何运作的。你就是这么做的。向上投票永远不会误入歧途,但您已经接受了答案,认为答案是可以接受的,因此,除了传递您所学到的内容外,仅此而已:D非常感谢,我这里的大多数错误似乎都是由于没有仔细阅读我的代码而导致的。这使它能够成功编译,但我现在在尝试运行它时遇到了这个问题:因为类文件位于包中,所以需要执行它。将目录更改一级(
cd..
),然后尝试
java components.OSButtons
Instead更改目录,使其成为C:\Users\Keith,而不是以前使用的C:\Users\Keith\Desktop