我想在可以在触摸屏上工作的应用程序中使用此JXDatePicker组件。因为默认组件很小,所以所有的日期和按钮都很难用较差的触摸屏来单击,我想将它们放大。到目前为止,我已经成功地使结果文本字段变大(通过更改字体显示所选日期的字段),使弹出窗口变大(JXMonthView,也通过更改其字体),将JXDatePicker的图片变大。图片,将默认日期设置为当前日期,设置日期格式,等等。这是我的代码:
private void touch_screen_datepicker(JXDatePicker date_picker) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
JXMonthView monthView = date_picker.getMonthView();
date_picker.setDate(new Date());
date_picker.setFont(new Font(Font.DIALOG, Font.PLAIN, 50));
JButton btn_pick = (JButton) date_picker.getComponent(1);
btn_pick.setBackground(new Color(66, 147, 223));
Image image = toolkit.getImage("/home/adrrian/Image/calendar/" + "calendar image 4.png"); //Земање на сликата за мк знаме
ImageIcon icon = new ImageIcon(image); //Правење на икона
btn_pick.setIcon(icon); //Поставување на иконата
SimpleDateFormat longFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat shortFormat = new SimpleDateFormat("yy-MM-dd");
Date startDate = new Date(0);//01.01.1970
shortFormat.set2DigitYearStart(startDate);
DatePickerFormatter formatter = new DatePickerFormatter(
// invers sequence for parsing to satisfy the year parsing rules
new DateFormat[]{shortFormat, longFormat}) {
@Override
public String valueToString(Object value) throws ParseException {
if (value == null) {
return null;
}
return getFormats()[1].format(value);
}
};
DefaultFormatterFactory factory = new DefaultFormatterFactory(formatter);
date_picker.getEditor().setFormatterFactory(factory);
monthView.setFont(new Font(Font.DIALOG, Font.PLAIN, 50));
monthView.setFirstDayOfWeek(Calendar.MONDAY);
}
这是我最后工作的图像:
我的主要问题是如何使箭头改变月份(例如,如果我从这张图片返回以显示9月)。我尝试列出所有组件,就像对按钮所做的那样,但是仍然没有发现任何东西。另外,为了获得更好的GUI,我喜欢找到深蓝色(显示月份的位置),使按钮保持不变。
希望可以有人帮帮我。提前致谢。
Toolkit toolkit = Toolkit.getDefaultToolkit();
JXMonthView monthView = date_picker.getMonthView();
/*EDITED*/
//1
date_picker.putClientProperty("JComponent.sizeVariant", "large");
monthView.putClientProperty("JComponent.sizeVariant", "large");
//2
date_picker.putClientProperty("JXComponent.sizeVariant", "large");
monthView.putClientProperty("JXComponent.sizeVariant", "large");
//3
date_picker.putClientProperty("JXDatePicker.sizeVariant", "large");
monthView.putClientProperty("JXMonthView.sizeVariant", "large");
//
date_picker.putClientProperty("JDatePicker.sizeVariant", "large");
monthView.putClientProperty("JMonthView.sizeVariant", "large");
SwingUtilities.updateComponentTreeUI(this);
SwingUtilities.updateComponentTreeUI(date_picker);
SwingUtilities.updateComponentTreeUI(monthView);
date_picker.updateUI();
monthView.updateUI();
/*EDITED*/
正如@Vighanesh Gursale所建议的那样,我对此行进行了解释,并在setVisible(true)之前执行了frame.pack(),但没有任何变化。
最佳答案
我已经使用nimbus的外观编写了一些代码,我知道您想要的并不完全正确,但是它很有帮助。检查此代码。要执行相同的操作,在我的情况下,您需要找到下一个和上一个按钮的键是Button.margin
。如果幸运的话,请尝试在代码中使用相同的键。
import javax.swing.*;
import java.awt.*;
public class Demo {
JFrame frame = new JFrame("");
JButton btn = new JButton("Example");
public Demo() {
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
frame.add(btn);
frame.setVisible(true);
}
public static void main(String[] args) {
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
Insets insets = new Insets(50, 20, 50, 20); //change the size of button
UIManager.put("Button.margin", insets);
}
catch(Exception e)
{
e.printStackTrace();
}
Demo d = new Demo();
}
}
还请记住使用默认外观或任何其他外观。
关于java - JXDatePicker使JXMonthView中的箭头变大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26545887/