Anthea
Anthea

Reputation: 3809

SwingX - personalize JXDatePicker

I want to personalize the JXDatePicker. More specifically I want to create an own own action button on a an own position. I tried to extract the included JButton but when I try to add it to any JPanel it only adds empty space.

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

I don't think this approach would work anyway, but I don't know any better at the moment. Any suggestions?

Upvotes: 3

Views: 3520

Answers (2)

Jorge Mujica
Jorge Mujica

Reputation: 11

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

Upvotes: 1

Anthea
Anthea

Reputation: 3809

found a working solution, migt be not the cleanest way:

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);

I added the dateBtn somewhere else in my view.

Upvotes: 2

Related Questions