我想实现一个效果: 在JSplitpane  的左侧是一个JTable,JTable 中有一列多行的内容 ,然后点击JTable的每个cell , 使得JSplitpane右侧的内容随之变换。我使用了
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) 
     // get formname according to clicked row.
}
}); 
JPanel form = new Jpanel();
/*
constuct form according to formname
*/JSpiltpane jspane = new JSplitpane(JSplitPane.HORIZONTAL_SPLIT,
table,form);问题是在于怎样才能使form根据mousclicked来改变呢,因为这个mouselistener只在方法mouseClicked()内起作用,但是初始化这个JSplitpanel只在table.addMouseListener(new MouseAdapter() {...}); 后发生,所以这样貌似formname就传不给新的form,这样JSplitpane的右边就无法变化。请问Java高手, 这个问题应该怎么解决呢,小弟是新手呀!!

解决方案 »

  1.   

    JSpiltpane jspane = new JSplitpane(JSplitPane.HORIZONTAL_SPLIT);
    table.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent e) 
    {
        // get formname according to clicked row. 
    JPanel form = new Jpanel(); 
    /*
    constuct form according to formname 
    */ 
    jspane.setRightComponent(form);} 
    }); 
    jspane.setLeftComponent(table);
      

  2.   

    如果 你所说的,每次左侧更换选中,右侧变化的是内容,那么并不需要每次都new一个新的。如果是需要,那另当别论。还有你说的问题,我真的不是很理解,如何传递,方法很多。更多的细节,我不知道,也不愿随便说。请告知更多的细节。
      

  3.   

    谢谢1楼的回复,按照你的方法我已经试过了,完全正确。
    另外我想在TableCellRenderer的cell中放置imageicon和text,如何才能使imageicon和text 垂直排列呢,即上面是一个小的imageicon,下面是text. public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    ImageIcon icon1 = new ImageIcon(getClass().getResource("form1.png"));
    setIcon(icon1);
    setText("Work time");
      

  4.   

    setHorizontalTextPosition(JLabel.CENTER);
    setVerticalTextPosition(JLabel.BOTTOM);