【问题标题】:SwingX - personalize JXDatePickerSwingX - 个性化 JXDatePicker
【发布时间】:2011-12-06 20:13:18
【问题描述】:

我想个性化 JXDatePicker。更具体地说,我想在自己的位置上创建自己的操作按钮。我试图提取包含的 JButton,但是当我尝试将它添加到任何 JPanel 时,它只会添加空白空间。

JXDatePicker fDate = new JXDatePicker(new Date());
fDate.getEditor().setBorder(null);
fDate.getEditor().setEditable(false);
JButton eDate = (JButton) fDate.getComponent(1);
fDate.remove(eDate);

我认为这种方法无论如何都行不通,但目前我不知道有什么更好的方法。 有什么建议吗?

【问题讨论】:

  • 嗯...你能扩展JXDatePicker吗?或者,也许您可​​以通过调用getContentPane() 或其他类似方法来解决问题?真的,答案可能就是你不能。
  • 为什么?好的,好的,我知道它看起来不太好 :-) 它不受支持,要进行更改,您必须编写自己的 DatePickerUI - 查看 Basic* 实现以获取想法
  • @kleopatra 是的,外观与我的其他组件不匹配 :) 我在哪里可以找到基本实现?我试图了解 JXDatePicker 的源代码,但找不到有关按钮 java2s.com/Open-Source/Java-Document/Swing-Library/swingx/org/… 的任何信息
  • 看BasicDatePickerUI的源码

标签: java swing swingx


【解决方案1】:

找到一个可行的解决方案,可能不是最干净的方法:

JXDatePicker fDate = new JXDatePicker(new Date());

//edit the Textfield
fDate.getEditor().setBorder(null);
fDate.getEditor().setEditable(false);

//edit the Button
JButton dateBtn= (JButton) fDate.getComponent(1);
Image editImage  =Toolkit.getDefaultToolkit().getImage(getClass().getResource("/toolbarButtonGraphics/general/Edit16.gif"));

dateBtn.remove(eDate);  
dateBtn.setIcon(new ImageIcon(editImage));
dateBtn.setFocusPainted(false);
dateBtn.setMargin(new Insets(0, 0, 0, 0));
dateBtn.setContentAreaFilled(false);
dateBtn.setBorderPainted(false);
dateBtn.setOpaque(false);

我在视图中的其他位置添加了 dateBtn。

【讨论】:

    【解决方案2】:
    ((JButton) startDatePicker.getComponent(1)).setIcon(new ImageIcon(((new ImageIcon(getClass().getResource("/images/calendar.png"))).getImage()).getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 2013-04-13
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多