2011-12-06 42 views
3

我想個性化JXDatePicker。更具體地說,我想在自己的位置創建一個屬於自己的操作按鈕。我試圖提取包含的JButton,但是當我嘗試將其添加到任何JPanel時,它只會添加空白空間。SwingX - 個性化JXDatePicker

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

我不認爲這種做法無論如何都會正常工作,但我不知道此刻更好。 有什麼建議嗎?

+0

嗯...你可以擴展'JXDatePicker'嗎?或者也許你可以通過調用getContentPane()或類似的方法來解決它的問題?真的,答案可能就是你不能。 –

+0

爲什麼?好吧,好吧,它看起來不太好,我知道:-)它不被支持,改變你將不得不寫你自己的DatePickerUI - 看看基本*實現的想法 – kleopatra

+1

@kleopatra是的,看起來不匹配我的其他組件:)我在哪裏可以找到基本的實現?我試圖理解JXDatePicker的源代碼,但找不到關於按鈕的任何內容http://www.java2s.com/Open-Source/Java-Document/Swing-Library/swingx/org/jdesktop/swingx/JXDatePicker。 java.htm – Anthea

回答

2

找到了工作方案,migt不清晰的方式:

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別的地方。

0
((JButton) startDatePicker.getComponent(1)).setIcon(new ImageIcon(((new ImageIcon(getClass().getResource("/images/calendar.png"))).getImage()).getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)));