Java 布局为空的JFrame不显示任何内容

Java 布局为空的JFrame不显示任何内容,java,swing,layout-manager,null-layout-manager,Java,Swing,Layout Manager,Null Layout Manager,带有null布局的我的JFrame不会显示任何内容。。。。我尝试将组件添加到JPanel,然后将其设置为框架的内容窗格。最近(如下面的代码所示),我尝试直接添加到框架中。我正在使用Java8 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Electog extends JFrame implements MouseListener, MouseMotionListener

带有
null
布局的我的
JFrame
不会显示任何内容。。。。我尝试将组件添加到
JPanel
,然后将其设置为框架的内容窗格。最近(如下面的代码所示),我尝试直接添加到框架中。我正在使用Java8

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

public class Electog extends JFrame implements MouseListener,      MouseMotionListener {
     BlankArea blankArea;
     JTextArea textArea;
static JFrame frame;

public static void main(String[] args) {
    JFrame frame = new Electog();
    frame.setTitle("Electog"); 
    frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
    frame.setVisible(true);
}

public Electog() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(null);

    JRadioButton selectButton = new JRadioButton("Select");
    selectButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    selectButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });
    selectButton.setSelected(true);

    JRadioButton removeButton = new JRadioButton("Remove");
    removeButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    removeButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton openButton = new JRadioButton("Open");
    openButton.addKeyListener(new KeyListener() {
        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    openButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });


    JRadioButton saveButton = new JRadioButton("Save");
    saveButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    saveButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton wireButton = new JRadioButton("Wiring");
    wireButton.setMnemonic(KeyEvent.VK_W);
    wireButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    wireButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton subcircuitButton = new JRadioButton("Subcircuit");
    subcircuitButton.setMnemonic(KeyEvent.VK_C);
    subcircuitButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    subcircuitButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton ANDButton = new JRadioButton("AND Gate");
    ANDButton.setMnemonic(KeyEvent.VK_A);
    ANDButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    ANDButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton NANDButton = new JRadioButton("NAND Gate");
    NANDButton.setMnemonic(KeyEvent.VK_N);
    NANDButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    NANDButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton ORButton = new JRadioButton("OR Gate");
    ORButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    ORButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton groundButton = new JRadioButton("Ground");
    groundButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    groundButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    JRadioButton powerButton = new JRadioButton("Power");
    powerButton.addKeyListener(new KeyListener() {
        @Override
        public void keyReleased(KeyEvent e) {
            handleAction(e);
        }

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override 
        public void keyPressed(KeyEvent e) {
            handleAction(e);
        }
    });
    powerButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            handleAction(e);
        }

        public void actionEvent(ActionEvent e) {
            handleAction(e);
        }
    });

    ButtonGroup group = new ButtonGroup();
    group.add(selectButton);
    group.add(removeButton);
    group.add(openButton);
    group.add(saveButton);
    group.add(wireButton);
    group.add(subcircuitButton);
    group.add(ANDButton);
    group.add(NANDButton);
    group.add(ORButton);
    group.add(groundButton);
    group.add(powerButton);

    //menu buttons, still need more features and zoom/move simulation screen
    add(selectButton);
    add(removeButton);
    add(openButton);
    add(saveButton);
    add(wireButton);
    add(subcircuitButton);
    add(ANDButton);
    add(NANDButton);
    add(ORButton);
    add(groundButton);
    add(powerButton);

    selectButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, 0, 0); //11 is number of buttons as far as now
    removeButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 0);
    openButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (2.0/11.0)), 0);
    saveButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (3.0/11.0)), 0);
    wireButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (4.0/11.0)), 0);
    subcircuitButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (5.0/11.0)), 0);
    ANDButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1/11)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (6.0/11.0)), 0);
    NANDButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (7.0/11.0)), 0);
    ORButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (8.0/11.0)), 0);
    groundButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (9.0/11.0)), 0);
    powerButton.setBounds((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1.0/11.0)), 50, (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (10.0/11.0)), 0);

    //subcircuit buttons
    JScrollPane ScrollPane = new JScrollPane();
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(null);
    buttonPanel.setSize(new Dimension((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1/5)), (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 50)));
    ScrollPane.setViewportView(buttonPanel);
    add(ScrollPane);
    ScrollPane.setBounds((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1/5)), (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 50), 0, 50);
    ScrollPane.updateUI();
    blankArea = new BlankArea(Color.WHITE);
    add(blankArea);
    blankArea.addMouseListener(this);
    blankArea.addMouseMotionListener(this);
    blankArea.setBounds((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (4/5)), (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 50), (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (1/5)), 50);
    addMouseListener(this);
    addMouseMotionListener(this);
    setPreferredSize(new Dimension((int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() * (4/5)),(int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - 50)));
}
public void handleAction(KeyEvent e) {
    if ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0 && (e.getKeyChar() == 'S' || e.getKeyChar() == 's')) {
        try {
            //saveCurrentFile();
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(frame, ex.getStackTrace());
        }
    } else if ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0 && (e.getKeyChar() == 'O' || e.getKeyChar() == 'o')) {
        try {
            //openFile();
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(frame, ex.getStackTrace());
        }
    } else if ((e.getModifiers() & KeyEvent.CTRL_MASK) == 0 && (e.getKeyChar() == 'A' || e.getKeyChar() == 'a')) {
        //selectAll();
    } else if ((e.getModifiers() & KeyEvent.CTRL_MASK) == 0 && (e.getKeyChar() == 'A' || e.getKeyChar() == 'a')) {  

    } else if ((e.getModifiers() & KeyEvent.CTRL_MASK) == 0 && (e.getKeyChar() == 'N' || e.getKeyChar() == 'n')) {  

    } else if ((e.getModifiers() & KeyEvent.CTRL_MASK) == 0 && (e.getKeyChar() == 'O' || e.getKeyChar() == 'o')) {  

    }

}

public void handleAction(ActionEvent e) {
    if (e.getActionCommand() == "Save") {
        try {
            //saveCurrentFile();
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(frame, ex.getStackTrace());
        }
    } else if (e.getActionCommand() == "Open") {
        try {
            //openFile();
        } catch(Exception ex) {
            JOptionPane.showMessageDialog(frame, ex.getStackTrace());
        }
    } else if (e.getActionCommand() == "AND Gate") {    

    } else if (e.getActionCommand() == "NAND Gate") {   

    } else if (e.getActionCommand() == "OR Gate") { 

    } else if (e.getActionCommand() == "Select") {  

    } else if (e.getActionCommand() == "Ground") {  

    } else if (e.getActionCommand() == "Power") {   

    } else if (e.getActionCommand() == "Remove") {  

    } else if (e.getActionCommand() == "Subcircuit") {  

    } else if (e.getActionCommand() == "Wiring") {  

    }
}

public void mousePressed(MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mouseClicked(MouseEvent e) {

}

public void mouseMoved(MouseEvent e) {

}

public void mouseDragged(MouseEvent e) {

}
}

每个
java。​awt。​组件
有一个
设置边界(int x,int y,int width,int height)
方法,用于确定其在容器中的位置。它只适用于空布局容器。

第1步:不要使用空布局。您正在将每个按钮的高度设置为0,将滚动窗格的宽度以及
selectButton
设置为0。我同意@gla3dr的观点,您认为
null
布局是创建复杂GUI的最简单方法,这是在愚弄自己。然而,它们的问题是,它们的使用导致了难以增强或调试的僵化GUI,GUI在大多数平台上看起来都很糟糕,除了一个平台。更好的长期解决方案是研究和使用布局管理器,学习嵌套JPanel,每个都使用自己的布局管理器。
“我认为现在最简单”
——但这会延迟您学习使用布局管理器,这是您不应该做的。勇敢一点——冒险一试——学习布局。“威尔·亚尔只是批评我”人们不是在批评你,只是在批评代码方法。不要将自己与代码混淆。“或者你能帮我处理我的空布局吗?”如果说“帮助”,你的意思是引导你找到一个解决方案,而这个解决方案不会导致更多的“现在我该如何修复…”式问题,是的。但要做到这一点,我们会使用布局,而你似乎拒绝给我们足够的信息来帮助你。