【发布时间】:2017-02-05 09:09:40
【问题描述】:
这是我的问题: 我有一个 JPanel 订单,其中有不同的组件;一个 JTable 和几个 JLabel。
这些组件填充了来自对象“commande”(订单)的数据,例如:idOrder、customer、Price...
这个 JPanel 位于另一个 Jpanel 中,该 Jpanel 也包含一个 jtable (orderlist)
当我点击jtable orderlist中的一个订单时,我希望将这个订单的信息打印在jpannel Order上。
现在,我单击,我的对象顺序已正确更新,但我无法执行 JPanel 的 repaint()。什么都没有发生。
这里是代码
public class PanneauDetailCommande extends JPanel{
Commande commande;
PanneauDetailCommande(){}
public void setCommande(Commande commande){this.commande=commande;}
public void paintComponent(Graphics g){
String colorPaye=commande.isPaye()? "GREEN" : "RED";
this.setBackground(Color.white);
this.setBorder(BorderFactory.createLineBorder(Color.black));
this.setPreferredSize(new Dimension(600,300));
JLabel labelDetail=new JLabel("<html><p style=\"padding-left:15px;\"><font size=4 > Détail commande<font color=\""+colorPaye+"\" size=4 > No "+(commande.getIdCommande())+"</font> :</font></p></html>");
labelDetail.setPreferredSize(new Dimension(598,20));
labelDetail.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.black));
labelDetail.setOpaque(true);
labelDetail.setBackground(Color.white );
this.add(labelDetail);
}}
另一个调用JPannel detailCommande的类JPannel:
historique.table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
// TODO Auto-generated method stub
int newId=Integer.parseInt(historique.table.getValueAt(historique.table.getSelectedRow(), 0).toString());
Commande newCommande = gestionCommande.getCommande(newId);
detail.setCommande(newCommande);
detail.repaint();
}});
【问题讨论】:
-
什么都不做?还是什么都不做?
-
请正确格式化您的代码
-
大声笑,我的意思是“什么都没发生”
-
好的,谢谢@Massimo