Java Swing组件绘制多个面板

时间:2015-03-12 00:55:15

标签: java swing

我遇到的问题是我一直想要解决的问题。我在一个框架内有两个面板,在一个面板中我添加了组件。但是,组件似乎具有与面板相同的层次结构值,因此将Frame视为父级,而忽略了面板的位置。基本上,组件被添加到一个面板,但在整个框架上显示在两个面板的顶部。 (不幸的是我现在不能发布图片,如果需要请投票给我这个问题)。造成这种情况的原因是什么?如何解决?

相关代码:

JFrame arranFrame = new JFrame("Edit Arrangement");
arranFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel grid = new JPanel();
        JPanel tools = new JPanel();

        grid.setSize(700, 600);
        tools.setSize(200, 600);

        JLabel widthLabel = new JLabel("Width");
        JLabel depthLabel = new JLabel("Depth");
        JLabel columnLabel = new JLabel("Columns");
        final JTextField rowWidthInput = new JTextField(30);
        final JTextField rowsInput = new JTextField(30);
        final JTextField columnInput = new JTextField(30);

        rowWidthInput.setSize(40, 30);
        rowsInput.setSize(40, 30);
        columnInput.setSize(40, 30);

        rowWidthInput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                chartWidth = Integer.parseInt(rowWidthInput.getText());
            }
        });

        rowsInput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                chartRows = Integer.parseInt(rowsInput.getText());
            }
        });

        columnInput.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                chartColumns = Integer.parseInt(columnInput.getText());
            }
        });

        //Enter button for grid modifying creation and setup
        JButton enterButton = new JButton("Enter");
        enterButton.setSize(180, 50);

        enterButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                chartWidth = Integer.parseInt(rowWidthInput.getText());
                chartRows = Integer.parseInt(rowsInput.getText());
                chartColumns = Integer.parseInt(columnInput.getText());
            }
        });

        //Save Arrangement button creation and setup
        JButton saveButton = new JButton("Save Arrangement");
        saveButton.setSize(180, 50);

        saveButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SaveArrangement(userDocuments + "\\TSA Seating Chart\\Arrangements\\Period" + period + ".txt");
            }
        });

        tools.setBackground(Color.RED); //Temp for visualization where the panes are

        tools.add(widthLabel);
        tools.add(rowWidthInput);
        tools.add(depthLabel);
        tools.add(rowsInput);
        tools.add(columnLabel);
        tools.add(columnInput);
        tools.add(enterButton);
        tools.add(saveButton);
        arranFrame.getContentPane().add(grid);
        arranFrame.getContentPane().add(tools);

        //Finalize the GUI
        arranFrame.pack();                           //Pack all the content together
        arranFrame.setSize(900, 600);                //Set the size of the window

        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        arranFrame.setLocation(dim.width/2-arranFrame.getSize().width/2, dim.height/2-arranFrame.getSize().height/2);

        arranFrame.setVisible(true);                 //Display the seatingFrame

0 个答案:

没有答案