Java 类1作为接口,类2侦听器必须在类1中执行某些操作
实际上,我正在玩一点Java来了解更多 我有一个用作主界面的类,我在其中添加了一些其他类和一些GUI元素Java 类1作为接口,类2侦听器必须在类1中执行某些操作,java,tree,action,listener,class-reference,Java,Tree,Action,Listener,Class Reference,实际上,我正在玩一点Java来了解更多 我有一个用作主界面的类,我在其中添加了一些其他类和一些GUI元素 public class JfrmInterfaceMain extends JFrame { private JPanel contentPane; private JpnlInterfaceMusic jpnlInterfaceMusic = new JpnlInterfaceMusic(); private JpnlInterfaceVideo jpnlInterfaceVideo
public class JfrmInterfaceMain extends JFrame {
private JPanel contentPane;
private JpnlInterfaceMusic jpnlInterfaceMusic = new JpnlInterfaceMusic();
private JpnlInterfaceVideo jpnlInterfaceVideo = new JpnlInterfaceVideo();
private JpnlInterfaceLibraryTree jpnlInterfaceLibraryTree = new JpnlInterfaceLibraryTree();
private JPanel panel;
private JPanel panel_1;
private JPanel panel_3;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JfrmInterfaceMain frame = new JfrmInterfaceMain();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public JfrmInterfaceMain() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1200, 800);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
panel_1 = new JPanel();
GridBagLayout gbl_panel_1 = new GridBagLayout();
gbl_panel_1.columnWidths = new int[] { 200, 0 };
gbl_panel_1.rowWeights = new double[] { 1.0 };
gbl_panel_1.columnWeights = new double[] { 0.0, 1.0 };
panel_1.setLayout(gbl_panel_1);
contentPane.add(panel_1, BorderLayout.CENTER);
GridBagConstraints gbcJpnlInterfaceLibraryTree = new GridBagConstraints();
gbcJpnlInterfaceLibraryTree.insets = new Insets(0, 0, 0, 5);
gbcJpnlInterfaceLibraryTree.fill = GridBagConstraints.BOTH;
gbcJpnlInterfaceLibraryTree.gridx = 0;
gbcJpnlInterfaceLibraryTree.gridy = 0;
panel_1.add(jpnlInterfaceLibraryTree, gbcJpnlInterfaceLibraryTree);
panel_3 = new JPanel();
panel_3.setLayout(new CardLayout());
GridBagConstraints gbc_panel_3 = new GridBagConstraints();
gbc_panel_3.insets = new Insets(0, 0, 0, 5);
gbc_panel_3.fill = GridBagConstraints.BOTH;
gbc_panel_3.gridx = 1;
gbc_panel_3.gridy = 0;
panel_1.add(panel_3, gbc_panel_3);
panel_3.add(jpnlInterfaceMusic);
panel_3.add(jpnlInterfaceVideo);
JButton btnNewButton = new JButton("Video");
panel.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
SetVideoActive();
}
});
JButton btnNewButton_1 = new JButton("Music");
panel.add(btnNewButton_1);
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
SetMusicActive();
}
});
setVisible(true);
}
public void SetVideoActive() {
jpnlInterfaceVideo.setVisible(true);
jpnlInterfaceMusic.setVisible(false);
}
public void SetMusicActive() {
jpnlInterfaceMusic.setVisible(true);
jpnlInterfaceVideo.setVisible(false);
}
这是我遇到问题的第二节课
private JpnlInterfaceLibraryTree jpnlInterfaceLibraryTree = new JpnlInterfaceLibraryTree();
public class JpnlInterfaceLibraryTree extends JPanel implements
TreeSelectionListener {
private JTree tree;
private JfrmInterfaceMain jfrmInterfaceMain;
private String selectedNode;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
JfrmInterfaceMain frame = new JfrmInterfaceMain();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public JpnlInterfaceLibraryTree() {
this.setLayout(new GridLayout(0, 1, 0, 0));
DefaultMutableTreeNode dmtnTitle = new DefaultMutableTreeNode(
"Medien (lokal)");
createNodes(dmtnTitle);
tree = new JTree(dmtnTitle);
tree.putClientProperty("JTree.lineStyle", "lineStyle");
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(this);
JScrollPane treeView = new JScrollPane(tree);
this.add(treeView);
}
private void createNodes(DefaultMutableTreeNode dmtnTitle) {
DefaultMutableTreeNode dmtnCategory = null;
dmtnCategory = new DefaultMutableTreeNode("Audio");
dmtnTitle.add(dmtnCategory);
dmtnCategory = new DefaultMutableTreeNode("Video");
dmtnTitle.add(dmtnCategory);
}
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (node == null) {
selectedNode = null;
}
selectedNode = node.toString();
}
public String getValue() {
return selectedNode;
}
我的目标是,像主界面中的两个按钮一样,根据TreeSelection切换Viode/音乐。
在1班,我可以用按钮切换视频/音乐。
在第2类中,我得到了当一个节点被选择时,选择哪个节点的字符串
但我不知道如何将一班的视频/音乐从二班切换到另一班。
或者我必须实现类1的侦听器吗