Java Swing MouseListener基础知识

Java Swing MouseListener基础知识,java,swing,Java,Swing,我正在尝试构建一个Applet,它在左侧包含一个菜单,在右侧包含一些内容。因此,当有人单击菜单中的不同内容时,它应该在右侧加载相应的内容。因此,我添加了一个MouseListener。只是做一些事情,比如contentPanel.add(new-AnlegenNeu())是愚蠢的。这是我能说的,但感觉不对 这是我目前的代码: import java.awt.Dimension; import java.awt.event.MouseEvent; import java.awt.event.Mou

我正在尝试构建一个Applet,它在左侧包含一个菜单,在右侧包含一些内容。因此,当有人单击菜单中的不同内容时,它应该在右侧加载相应的内容。因此,我添加了一个
MouseListener
。只是做一些事情,比如
contentPanel.add(new-AnlegenNeu())是愚蠢的。这是我能说的,但感觉不对

这是我目前的代码:

import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;


public class MainGUI extends JApplet{
    private static final long serialVersionUID = 1L;

    private JTree menuTree;
    private JPanel contentPanel;

    public MainGUI() {
        JPanel menuPanel = new JPanel();
        contentPanel = new JPanel();
        contentPanel.setPreferredSize(new Dimension(500,500));
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        splitPane.setDividerLocation(0.5);
        splitPane.setLeftComponent(menuPanel);
        splitPane.setRightComponent(contentPanel);
        menuTree = new MenuTree().getElement();
        JScrollPane menuScrollPane = new JScrollPane(menuTree);
        menuScrollPane.setPreferredSize(new Dimension(150, 200));
        menuScrollPane.setMinimumSize(new Dimension(150, 200));
        menuScrollPane.setMaximumSize(new Dimension(200, 200));
        menuPanel.add(menuScrollPane);      

        getContentPane().add(splitPane);
        getContentPane().setVisible(true);

        menuTree.addMouseListener(new MouseListener() {

            @Override
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount() == 1) {
                    String clicked = MainGUI.this.menuTree.getSelectionPath().getLastPathComponent().toString();    

                    if(clicked.equals("Test")) {
                        MainGUI.this.contentPanel.add(new AufgabeNeu().getElement());
                        MainGUI.this.repaint();
                    }
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mouseExited(MouseEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mousePressed(MouseEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mouseReleased(MouseEvent e) {
                // TODO Auto-generated method stub

            }

        });
    }
}
什么是编写此代码的好方法?我觉得我做错了


编辑:我通过MainGUI访问代码中变量的方式。这个.contentPanel.add()很奇怪,我不喜欢它。没有更好的方法吗?

init()在哪里?为了获得更大的灵活性,请考虑a。你可以只写<代码> CaltPosi.Advand(<代码)>而不预先将它与<代码> Mungi。这个< /代码>。你可能需要一个<代码> MouseAdapter <代码>使你的代码更干净。如果左边的列表对应于右边显示的组件,您可能希望在它们之间保留一个
映射。此外,如果组件在相互替换时大小不一样,则可能看起来很奇怪。