Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package anlavn.ui;
// Make By Bình An || AnLaVN || KatoVN
import java.awt.*;
import javax.swing.*;
import static javax.swing.JOptionPane.*;
/**Lớp Mode hỗ trợ thay đổi chế độ từ sáng sang tối, component từ nimbus sang giao diện windows.
* @author AnLaVN - https://github.com/AnLaVN
*/
public class Mode {
private static boolean MODE = false;
private static final LookAndFeel PRE_LF = UIManager.getLookAndFeel();
private static final String SYS_LF = UIManager.getSystemLookAndFeelClassName();
private static Color TextDarkMode = Color.decode("#F0F0F0"), TextLightMode = Color.decode("#2C3338");
private static Color BackDarkMode = Color.decode("#363B41"), BackLightMode = Color.decode("#FFFFFF");
/**Sử dụng phương thức này để nhận Chế độ hiện tại.
* @return true nếu Chế độ là Tối, false nếu Chế độ là Sáng.
*/
public static boolean getMode() { return MODE; }
/**Sử dụng phương thức này để đặt Chế độ cho UI.
* @param MODE true là Chế độ Tối, false là Chế độ Sáng.
*/
public static void setMode(boolean MODE) {
Mode.MODE = MODE;
}
/**Sử dụng phương thức này để lấy màu Văn bản ở Chế độ hiện tại.
* @return Màu Văn bản ở Chế độ hiện tại
*/
public static Color getTextColor() { return MODE ? TextDarkMode : TextLightMode; }
/**Sử dụng phương thức này để lấy màu văn bản ở Chế độ sáng.
* @return Màu văn bản ở Chế độ sáng.
*/
public static Color getTextLightColor() { return TextLightMode; }
/**Sử dụng phương thức này để lấy màu văn bản ở Chế độ ánh tối.
* @return Màu văn bản ở Chế độ tối.
*/
public static Color getTextDarkColor() { return TextDarkMode; }
/**Sử dụng phương thức này để lấy màu nền ở Chế độ hiện tại.
* @return Màu nền ở Chế độ hiện tại
*/
public static Color getBackColor() { return MODE ? BackDarkMode : BackLightMode; }
/**Sử dụng phương thức này để lấy màu nền ở Chế độ sáng.
* @return Màu nền ở Chế độ sáng.
*/
public static Color getBackLightColor() { return BackLightMode; }
/**Sử dụng phương thức này để lấy màu nền ở Chế độ ánh tối.
* @return Màu nền ở Chế độ tối.
*/
public static Color getBackDarkColor() { return BackDarkMode; }
/**Sử dụng phương thức này để tùy chỉnh Màu của Văn Bản trong 2 trường hợp Chế Độ Tối và Sáng.
* @param TextDarkMode là Màu của Văn Bản nếu Chế Độ là Tối, nên là màu sáng.
* @param TextLightMode là Màu của Văn Bản nếu Chế Độ là Sáng, nên là màu tối.
*/
public static void setTextColor(Color TextDarkMode, Color TextLightMode){
Mode.TextDarkMode = TextDarkMode;
Mode.TextLightMode = TextLightMode;
}
/**Sử dụng phương thức này để tùy chỉnh Màu của Nền trong 2 trường hợp Chế Độ Tối và Sáng.
* @param BackDarkMode là Màu của Nền nếu Chế Độ là Tối, nên là màu tối.
* @param BackLightMode là Màu của Nền nếu Chế Độ là Sáng, nên là màu sáng.
*/
public static void setBackColor(Color BackDarkMode, Color BackLightMode){
Mode.BackDarkMode = BackDarkMode;
Mode.BackLightMode = BackLightMode;
}
/**Sử dụng phương thức này để thay đổi Chế độ cho các Component.
* @param components là danh sách các biến Component cần thay đổi Chế Độ.
*/
public static void setModeComponent(Component... components){
for(Component component : components) setModeComponent(component);
}
/**Sử dụng phương thức này để thay đổi Chế độ cho một Component.
* @param component là biến Component cần thay đổi Chế Độ.
*/
public static void setModeComponent(Component component){
JComponent j = null;
if(component instanceof JPanel pan) {j = pan;}
if(component instanceof JLabel lbl) {j = lbl;}
if(component instanceof JRadioButton rdo) {j = rdo;}
if(component instanceof JCheckBox chk) {j = chk;}
if(component instanceof JTextField txt) {j = txt;}
if(component instanceof JTextPane tpa) {j = tpa;}
if(component instanceof JTextArea tar) {j = tar;}
if(component instanceof JTable tbl) {j = tbl;}
if(component instanceof JButton btn) {j = btn;}
if(component instanceof JScrollBar scb) {j = scb;}
if(j != null){
if(!(j instanceof JScrollBar)){
j.setForeground ( MODE ? TextDarkMode : TextLightMode );}
j.setBackground ( MODE ? BackDarkMode : BackLightMode );
}
}
/**Sử dụng phương thức này để thay đổi Trình Chọn Tệp thành Giao diện của Windows.
* @return một JFileChooser đã thay đổi Giao diện.
*/
public static JFileChooser WFileChooser(){
JFileChooser chooser = null;
try {
UIManager.setLookAndFeel(SYS_LF);
chooser = new JFileChooser();
UIManager.setLookAndFeel(PRE_LF);
} catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of File Chooser. !!!\n\tError code: " + e.toString());}
return chooser;
}
/**Sử dụng phương thức này để thay đổi Hộp Kiểm thành Giao diện của Windows.
* @return một JCheckBox đã thay đổi Giao diện.
*/
public static JCheckBox WCheckBox(){
JCheckBox checkbox = null;
try {
UIManager.setLookAndFeel(SYS_LF);
checkbox = new JCheckBox();
UIManager.setLookAndFeel(PRE_LF);}
catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of Check Box. !!!\n\tError code: " + e.toString());}
return checkbox;
}
/**Sử dụng phương thức này để thay đổi Combo Box thành Giao diện của Windows.
* @return một JComboBox đã thay đổi Giao diện.
*/
public static JComboBox WComboBox(){
JComboBox combobox = null;
try {
UIManager.setLookAndFeel(SYS_LF);
combobox = new JComboBox();
UIManager.setLookAndFeel(PRE_LF);}
catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of Combo Box. !!!\n\tError code: " + e.toString());}
return combobox;
}
/**Sử dụng phương thức này để hiển thị một hộp thoại thông báo.
* @param parentComponent Frame trong đó hộp thoại được hiển thị, nếu null hoặc không có Frame, một Frame mặc định sẽ được sử dụng.
* @param message Object để hiển thị.
*/
public static void WMessage(Component parentComponent, Object message){
WMessage(parentComponent, message, "Message Dialog", INFORMATION_MESSAGE);
}
/**Sử dụng phương thức này để hiển thị một hộp thoại thông báo, với tất cả các tham số.
* @param parentComponent Frame trong đó hộp thoại được hiển thị, nếu null hoặc không có Frame, một Frame mặc định sẽ được sử dụng.
* @param message Object để hiển thị.
* @param title Chuỗi tiêu đề cho hộp thoại.
* @param messageType loại thông báo sẽ được hiển thị:
* ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, hoặc PLAIN_MESSAGE.
*/
public static void WMessage(Component parentComponent, Object message, String title, int messageType){
WMessage(parentComponent, message, title, messageType, null);
}
/**Sử dụng phương thức này để hiển thị một hộp thoại thông báo, với tất cả các tham số.
* @param parentComponent Frame trong đó hộp thoại được hiển thị, nếu null hoặc không có Frame, một Frame mặc định sẽ được sử dụng.
* @param message Object để hiển thị.
* @param title Chuỗi tiêu đề cho hộp thoại.
* @param messageType loại thông báo sẽ được hiển thị:
* ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, hoặc PLAIN_MESSAGE.
* @param icon - một biểu tượng để hiển thị trong hộp thoại giúp người dùng xác định loại thông báo đang được hiển thị.
*/
public static void WMessage(Component parentComponent, Object message, String title, int messageType, Icon icon){
try {
UIManager.setLookAndFeel(SYS_LF);
JOptionPane.showMessageDialog(parentComponent, message, title, messageType, icon);
UIManager.setLookAndFeel(PRE_LF);
} catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of MessageDialog. !!!\n\tError code: " + e.toString());}
}
/**Sử dụng phương thức này để hiển thị hộp thoại Xác Nhận với các tùy chọn "Yes, No and Cancel".
* @param parentComponent Frame trong đó hộp thoại được hiển thị.
* @param message Object để hiển thị.
* @return một số nguyên cho biết tùy chọn được người dùng chọn.
*/
public static int WConfirm(Component parentComponent, Object message){
return WConfirm(parentComponent, message, "Confirm Dialog", YES_NO_CANCEL_OPTION);
}
/**Sử dụng phương thức này để hiển thị hộp thoại Xác Nhận, trong đó số lượng lựa chọn được xác định bởi tham số optionType.
* @param parentComponent Frame trong đó hộp thoại được hiển thị.
* @param message Object để hiển thị.
* @param title Chuỗi tiêu đề cho hộp thoại.
* @param optionType một int chỉ định các tùy chọn có sẵn trên hộp thoại:
* YES_NO_OPTION, YES_NO_CANCEL_OPTION hoặc OK_CANCEL_OPTION.
* @return một số nguyên cho biết tùy chọn được người dùng chọn.
*/
public static int WConfirm(Component parentComponent, Object message, String title, int optionType){
return WConfirm(parentComponent, message, title, optionType, QUESTION_MESSAGE);
}
/**Sử dụng phương thức này để hiển thị hộp thoại Xác Nhận, với tất cả các tham số và biểu tượng mặc định.
* @param parentComponent Frame trong đó hộp thoại được hiển thị.
* @param message Object để hiển thị.
* @param title Chuỗi tiêu đề cho hộp thoại.
* @param optionType một int chỉ định các tùy chọn có sẵn trên hộp thoại:
* YES_NO_OPTION, YES_NO_CANCEL_OPTION hoặc OK_CANCEL_OPTION.
* @param messageType loại thông báo sẽ được hiển thị:
* ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE hoặc PLAIN_MESSAGE.
* @return một số nguyên cho biết tùy chọn được người dùng chọn.
*/
public static int WConfirm(Component parentComponent, Object message, String title, int optionType, int messageType){
return WConfirm(parentComponent, message, title, optionType, messageType, null);
}
/**Sử dụng phương thức này để hiển thị hộp thoại Xác Nhận, với tất cả các tham số.
* @param parentComponent Frame trong đó hộp thoại được hiển thị.
* @param message Object để hiển thị.
* @param title Chuỗi tiêu đề cho hộp thoại.
* @param optionType một int chỉ định các tùy chọn có sẵn trên hộp thoại:
* YES_NO_OPTION, YES_NO_CANCEL_OPTION hoặc OK_CANCEL_OPTION.
* @param messageType loại thông báo sẽ được hiển thị:
* ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE hoặc PLAIN_MESSAGE.
* @param icon biểu tượng để hiển thị trong hộp thoại.
* @return một số nguyên cho biết tùy chọn được người dùng chọn.
*/
public static int WConfirm(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon) {
try {
UIManager.setLookAndFeel(SYS_LF);
int ConfirmDialog = JOptionPane.showConfirmDialog(parentComponent, message, title, optionType, messageType, icon);
UIManager.setLookAndFeel(PRE_LF);
return ConfirmDialog;
} catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of ConfirmDialog. !!!\n\tError code: " + e.toString());
throw new RuntimeException(e);}
}
/**Sử dụng phương thức này để hiển thị hộp thoại Nhập, hiển thị câu hỏi. message.
* @param message Object để hiển thị.
* @return thông tin đầu vào của người dùng.
*/
public static String WInput(Object message){
return WInput(null, message);
}
/**Sử dụng phương thức này để hiển thị hộp thoại Nhập, hiển thị bên trong Component.
* @param parentComponent Thành phần chính cho hộp thoại.
* @param message Object để hiển thị.
* @return thông tin đầu vào của người dùng.
*/
public static String WInput(Component parentComponent, Object message){
return WInput(parentComponent, message,"Input Dialog" , QUESTION_MESSAGE);
}
/**Sử dụng phương thức này để hiển thị hộp thoại Nhập, có tittle và messageType.
* @param parentComponent Thành phần chính cho hộp thoại.
* @param message Object để hiển thị.
* @param title String tiêu đề để hiển thị trong thanh tiêu đề hộp thoại.
* @param messageType loại tin nhắn sẽ được hiển thị:
* ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE hoặc PLAIN_MESSAGE.
* @return thông tin đầu vào của người dùng.
*/
public static String WInput(Component parentComponent, Object message, String title, int messageType){
try {
UIManager.setLookAndFeel(SYS_LF);
String InputDialog = JOptionPane.showInputDialog(parentComponent, message, title, messageType);
UIManager.setLookAndFeel(PRE_LF);
return InputDialog;
} catch (IllegalAccessException | UnsupportedLookAndFeelException | InstantiationException | ClassNotFoundException e) {
System.out.println("\n!!! Error trying to change Look and Feel of InputDialog. !!!\n\tError code: " + e.toString());
throw new RuntimeException(e);}
}
}