Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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 GUI-菜单栏和拆分窗格_Java_Split_Jframe_Jpanel_Pane - Fatal编程技术网

Java GUI-菜单栏和拆分窗格

Java GUI-菜单栏和拆分窗格,java,split,jframe,jpanel,pane,Java,Split,Jframe,Jpanel,Pane,我知道如何编写Java代码,但我在这方面遇到了很多麻烦。我制作了一个菜单栏,但我想在下面放一个拆分窗格。菜单栏很好,但是分割窗格给了我很多错误,我不知道如何修复它 任何帮助都将不胜感激 package getcodinggui; import java.awt.*; import java.awt.event.*; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JMenuBar;

我知道如何编写Java代码,但我在这方面遇到了很多麻烦。我制作了一个菜单栏,但我想在下面放一个拆分窗格。菜单栏很好,但是分割窗格给了我很多错误,我不知道如何修复它

任何帮助都将不胜感激

    package getcodinggui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;

import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;


public class GetCodingGUI {
    JTextArea output;
    JScrollPane scrollPane;

    public JMenuBar createMenuBar() {
        JMenuBar menuBar;
        JMenu menu;

        menuBar = new JMenuBar();

        menu = new JMenu("Home");
        menu.setMnemonic(KeyEvent.VK_A);
        menu.getAccessibleContext().setAccessibleDescription(
                "File Menu Items");
        menuBar.add(menu);

        menu = new JMenu("About");
        menu.setMnemonic(KeyEvent.VK_N);
        menu.getAccessibleContext().setAccessibleDescription(
                "Edit Menu Items");
        menuBar.add(menu);

        menu = new JMenu("Contact Us");
        menu.setMnemonic(KeyEvent.VK_N);
        menu.getAccessibleContext().setAccessibleDescription(
                "Edit Menu Items");
        menuBar.add(menu);

        menu = new JMenu("FAQ");
        menu.setMnemonic(KeyEvent.VK_N);
        menu.getAccessibleContext().setAccessibleDescription(
                "Edit Menu Items");
        menuBar.add(menu);

        menu = new JMenu("Log In");
        menu.setMnemonic(KeyEvent.VK_N);
        menu.getAccessibleContext().setAccessibleDescription(
                "Edit Menu Items");
        menuBar.add(menu);

        return menuBar;
    }


    public Container createContentPane() {
        //Create the content-pane-to-be.
        JPanel contentPane = new JPanel(new BorderLayout());
        contentPane.setOpaque(true);


        //Create a scrolled text area.
        output = new JTextArea(5, 30);
        output.setEditable(false);
        scrollPane = new JScrollPane(output);

        //Add the text area to the content pane.
        contentPane.add(scrollPane, BorderLayout.CENTER);

        return contentPane;
    }

    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        public static class MyJFrameWin extends JFrame{ 

        JSplitPane jSplitPane, jSplitPane2;
        JPanel jPanel1, jPanel2a, jPanel2b;

        jPanel1 = new JPanel();
            jPanel2a = new JPanel();
            jPanel2b = new JPanel();

            jSplitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, 
                    jPanel2a, jPanel2b);
            jSplitPane2.setOneTouchExpandable(true);
            jSplitPane2.setDividerLocation(100);

            jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, 
                    jPanel1, jSplitPane2);
            jSplitPane.setOneTouchExpandable(true);
            jSplitPane.setDividerLocation(150);

            getContentPane().add(jSplitPane);
        }
}


        //Create and set up the content pane.
        GetCodingGUI demo = new GetCodingGUI();
        frame.setJMenuBar(demo.createMenuBar());
        frame.setContentPane(demo.createContentPane());

        //Display the window.
        frame.setSize(1280, 720);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(runJSplitPaneLater);
}

        javax.swing.SwingUtilities.invokeLater(new Runnable, runJSplitPaneLater() 

{
        static Runnable runJSplitPaneLater = new Runnable(){
            @Override
        public void run() {
            MyJFrameWin myJFrameWin = new MyJFrameWin();
            myJFrameWin.setVisible(true);
                createAndShowGUI();
            }  
        });


    }
}

我必须清除20个编译错误

这是我创建的GUI

这是我做的改动

  • 我重新整理了你所有的代码。代码自上而下读取时更容易理解

  • 由于SwingUtilities invokeLater方法需要一个可运行的,所以我让您的GUI视图类实现了可运行的

  • 我将您的内容窗格放在一个JSplitPane中。我只是猜到了哪个窗格

  • 我将外部JSplitPane放入JFrame

  • 我修复了你的菜单alt键

  • 我从createContentPane方法返回了一个JPanel

  • 我格式化了你的代码

  • 我缩小了你JFrame的尺寸,这样它就可以放在我的屏幕上了

  • 代码如下:

    package com.ggl.testing;
    
    import java.awt.BorderLayout;
    import java.awt.event.KeyEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JSplitPane;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class GetCodingGUI implements Runnable {
        private JTextArea output;
        private JScrollPane scrollPane;
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new GetCodingGUI());
        }
    
        @Override
        public void run() {
            // Create and set up the window.
            JFrame frame = new JFrame("Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JSplitPane jSplitPane, jSplitPane2;
            JPanel jPanel1, jPanel2a, jPanel2b;
    
            jPanel1 = new JPanel();
            jPanel2a = new JPanel();
            jPanel2b = createContentPane();
    
            jSplitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jPanel2a,
                    jPanel2b);
            jSplitPane2.setOneTouchExpandable(true);
            jSplitPane2.setDividerLocation(100);
    
            jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jPanel1,
                    jSplitPane2);
            jSplitPane.setOneTouchExpandable(true);
            jSplitPane.setDividerLocation(150);
    
            frame.add(jSplitPane);
            frame.setJMenuBar(createMenuBar());
    
            // Display the window.
            frame.setSize(800, 600);
            frame.setVisible(true);
        }
    
        public JMenuBar createMenuBar() {
            JMenuBar menuBar;
            JMenu menu;
    
            menuBar = new JMenuBar();
    
            menu = new JMenu("Home");
            menu.setMnemonic(KeyEvent.VK_H);
            menu.getAccessibleContext().setAccessibleDescription("File Menu Items");
            menuBar.add(menu);
    
            menu = new JMenu("About");
            menu.setMnemonic(KeyEvent.VK_A);
            menu.getAccessibleContext().setAccessibleDescription("Edit Menu Items");
            menuBar.add(menu);
    
            menu = new JMenu("Contact Us");
            menu.setMnemonic(KeyEvent.VK_C);
            menu.getAccessibleContext().setAccessibleDescription("Edit Menu Items");
            menuBar.add(menu);
    
            menu = new JMenu("FAQ");
            menu.setMnemonic(KeyEvent.VK_F);
            menu.getAccessibleContext().setAccessibleDescription("Edit Menu Items");
            menuBar.add(menu);
    
            menu = new JMenu("Log In");
            menu.setMnemonic(KeyEvent.VK_L);
            menu.getAccessibleContext().setAccessibleDescription("Edit Menu Items");
            menuBar.add(menu);
    
            return menuBar;
        }
    
        public JPanel createContentPane() {
            // Create the content-pane-to-be.
            JPanel contentPane = new JPanel(new BorderLayout());
            contentPane.setOpaque(true);
    
            // Create a scrolled text area.
            output = new JTextArea(5, 30);
            output.setEditable(false);
            scrollPane = new JScrollPane(output);
    
            // Add the text area to the content pane.
            contentPane.add(scrollPane, BorderLayout.CENTER);
    
            return contentPane;
        }
    
    }
    

    “大量错误”-请在您的帖子中包含错误
    “大量错误”
    --这表明您的编码风格需要修正。不要键入大量代码,然后进行测试。相反,如果您不能使用诸如NetBeans或Eclipse之类的现代IDE(它几乎会立即警告您编译问题),那么您就应该尽早并经常编译代码,最重要的是,在修复当前的编译问题之前,不要添加任何新代码。否则,你将面临一大堆难以修复的错误。是的,我知道我应该提到这些错误。对不起。我用NetBeans编写了代码,但我不明白发生了什么……非常感谢,我将练习使我的代码更高效。