2

こんにちは、次JScrollPaneのようなコンテンツを変更しようとしています

scrollPanel = new JScrollPane(new Welcome().display());

        for(final JMenuItem i : items) {
            i.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String txt = i.getText();

                    if(txt.equals("Open")) {
                        scrollPanel = new JScrollPane(new Open().display());
                    } else if(txt.equals("Save")) {
                        scrollPanel = new JScrollPane(new Save().display());
                    } else if(txt.equals("Save as")) {
                        scrollPanel = new JScrollPane(new SaveAs().display());
                    } else if(txt.equals("Close")) {
                        new Close().ask();
                        scrollPanel = new JScrollPane();
                    }

                    scrollPanel.revalidate();
                    scrollPanel.repaint();
                }
            });
        }   

        scrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

        menuBar.add(menu);
        frame.setJMenuBar(menuBar);
        frame.add(scrollPanel);

        frame.pack();
        frame.setSize(640, 480);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

しかし、うまくいきません。各クラス Open、Save、SaveAsJPaneJLabel内部で戻ります。元。

public class Open {
    public JPanel display() {
        JPanel panel = new JPanel();
        panel.add(new JLabel("Open"));
        return panel;
    }
}
4

1 に答える 1

3

スクロールペインのコンテンツを変更していません。フィールドに新しい JScrollPane インスタンスを割り当てていscrollPanelます。フレームに追加して表示されたスクロール ペインはそのまま残ります。

スクロールペインの内容を変更したい場合は、使用する必要があります

scrollPanel.setViewportView(new Open().display());
于 2012-11-03T09:54:36.947 に答える