import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.Window;
import java.util.Enumeration;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JRootPane;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
/**
* 提供对AWT,Swing有用的静态方法
*
* @author none
*/
public <st1:rtx>cl</st1:rtx>ass SwingUtil {
/**<o:p></o:p>
* 由此类中方法使用的默认 java.awt.Toolkit<o:p></o:p>
*/<o:p></o:p>
public static final Toolkit toolkit = Toolkit.getDefaultToolkit();
/**<o:p></o:p>
* 将window全屏化,对Window,Frame,Dialog,JWindow,JFrame,JDialog有效<o:p></o:p>
* @param window 全屏化的window<o:p></o:p>
* @see Window,Frame,Dialog,JWindow,JFrame,JDialog<o:p></o:p>
*/<o:p></o:p>
public static void setSizeFu<st1:rtx>ll</st1:rtx>OfScreen(Window window) {
Dimension screenSize = toolkit.getScreenSize();
window.setBounds(0, 0, screenSize.width, screenSize.height);
}
/**<o:p></o:p>
* 将window设置在屏幕中间,对Window,Frame,Dialog,JWindow,JFrame,JDialog有效<o:p></o:p>
* @param window 设置在屏幕中间的window<o:p></o:p>
* @see Window,Frame,Dialog,JWindow,JFrame,JDialog<o:p></o:p>
*/<o:p></o:p>
public static void setToScreenCenter(Window window) {
Dimension screenSize = toolkit.getScreenSize();
Dimension windowSize = window.getSize();
if (windowSize.height > screenSize.height)
windowSize.height = screenSize.height;
if (windowSize.width > screenSize.width)
windowSize.width = screenSize.width;
window.setLocation((screenSize.width - windowSize.width) / 2,
(screenSize.height - windowSize.height) / 2);
}
/**<o:p></o:p>
* 设置全局字体<o:p></o:p>
* @param font 全局字体<o:p></o:p>
*/<o:p></o:p>
public static void initGlobalFontSetting(Font font) {
FontUIResource fontRes = new FontUIResource(font);
for (Enumeration keys = UIManager.getDefaults().keys(); keys
.hasMoreElements();) {
Obje<st1:rtx>ct</st1:rtx> key = keys.nextElement();
Obje<st1:rtx>ct</st1:rtx> value = UIManager.get(key);
if (value instanceof FontUIResource)
UIManager.put(key, fontRes);
}
}
/**<o:p></o:p>
* 在Component上设置光标(Cursor)<o:p></o:p>
* @param c 在此Component上设置光标(Cursor)<o:p></o:p>
* @param image 设置的光标(Cursor)图案<o:p></o:p>
*/<o:p></o:p>
public static void setCursor(Component c, Image image) {
Cursor cursor = toolkit
.createCustomCursor(image, new Point(0, 0), nu<st1:rtx>ll</st1:rtx>);
c.setCursor(cursor);
}
/**<o:p></o:p>
* 设置全局LookAndFeel,此后建立的Swing部件使用此LookAndFeel<o:p></o:p>
* @param lafstr 设置的LookAndFeel<o:p></o:p>
* @return 0:设置成功,1:设置失败<o:p></o:p>
*/<o:p></o:p>
public static int setGloba<st1:rtx>lL</st1:rtx>ookAndFeel(String lafstr) {
try {
UIManager.setLookAndFeel(lafstr);
return 0;
} catch (Exception e) {
return 1;
}
}
<o:p> </o:p>
/**<o:p></o:p>
* 此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
private static boolean isUndecorated=false;
<o:p> </o:p>
/**<o:p></o:p>
* 返回此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
* @return 此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static boolean isUndecorated() {
return isUndecorated;
}
<o:p> </o:p>
/**<o:p></o:p>
* 设置此后建立的JFrame,JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
* @param 是否此后建立的JFrame,JDialog使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static void setUndecorated(boolean undecorated) {
LookAndFeel laf = UIManager.getLookAndFeel();
SwingUtil.isUndecorated = undecorated;
JFrame.setDefaultLookAndFeelDecorated(undecorated
&& laf.getSupportsWindowDecorations());
JDialog.setDefaultLookAndFeelDecorated(undecorated
&& laf.getSupportsWindowDecorations());
}
<o:p> </o:p>
/**<o:p></o:p>
* 设置JFrame是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
* @param 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static void setUndecorated(JFrame frame,boolean undecorated){
if(frame.isDisplayable()) frame.dispose();
frame.setUndecorated(undecorated&&UIManager.getLookAndFeel().getSupportsWindowDecorations());
JRootPane jRootPane=frame.getRootPane();
jRootPane.setWindowDecorationStyle(jRootPane.getWindowDecorationStyle());
if(frame.isDisplayable()) frame.show();
}
<o:p> </o:p>
/**<o:p></o:p>
* 设置JDialog是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
* @param 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static void setUndecorated(JDialog dialog,boolean undecorated){
if(dialog.isDisplayable()) dialog.dispose();
dialog.setUndecorated(undecorated&&UIManager.getLookAndFeel().getSupportsWindowDecorations());
JRootPane jRootPane=dialog.getRootPane();
jRootPane.setWindowDecorationStyle(jRootPane.getWindowDecorationStyle());
if(dialog.isDisplayable()) dialog.show();
}
/**<o:p></o:p>
* 更新本程序建立的所有JFrame的LookAndFeel<o:p></o:p>
*/<o:p></o:p>
public static void updateUI(){
Frame[] frames=Frame.getFrames();
for(int i=0;i<frames.length;i++)
updateUI(frames[i]);
}
/**<o:p></o:p>
* 更新Component的LookAndFeel<o:p></o:p>
* @param target 操作对象<o:p></o:p>
*/<o:p></o:p>
public static void updateUI(Component target){
if(target instanceof JFrame)
updateUI((JFrame)target,isUndecorated);
if(target instanceof JDialog)
updateUI((JDialog)target,isUndecorated);
SwingUtilities.updateComponentTreeUI(target);
}
/**<o:p></o:p>
* 更新JFrame的LookAndFeel,改变JFrame的边框,标题<o:p></o:p>
* @param frame 操作对象<o:p></o:p>
* @param undecorated 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static void updateUI(JFrame frame,boolean undecorated){
setUndecorated(frame,undecorated);
SwingUtilities.updateComponentTreeUI(frame);
}
<o:p> </o:p>
/**<o:p></o:p>
* 更新JDialog的LookAndFeel,改变JDialog的边框,标题<o:p></o:p>
* @param dialog 操作对象<o:p></o:p>
* @param undecorated 是否使用LookAndFeel的窗口装饰(标题栏,边框等)<o:p></o:p>
*/<o:p></o:p>
public static void updateUI(JDialog dialog,boolean undecorated){
setUndecorated(dialog,undecorated);
SwingUtilities.updateComponentTreeUI(dialog);
}
}
分享到:
相关推荐
标题 "graalvm编译swing失败问题处理" 涉及到的是在使用GraalVM进行Java Swing应用的编译时遇到的问题及其解决方法。GraalVM是一款高性能的运行时环境,支持多种语言,并且对于Java,它提供了一个先进的即时编译器,...
java swing GUI界面显示IE网页 根据网址跳转到相应网站
开发者可以通过调用LookAndFeel类的静态方法setLookAndFeel()来设置应用程序的外观,如`LookAndFeel.installLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");` 2. javax.swing.UIManager:这个...
4. **Look and Feel的设置方法** - 静态设定:使用`UIManager.setLookAndFeel()`,指定如`UIManager.getCrossPlatformLookAndFeelClassName()`或`UIManager.getSystemLookAndFeelClassName()`。 - 动态设定:同样...
这通常涉及到`Class.forName()`方法和`LookAndFeel`类的静态方法`getLookAndFeel()`。 ```java try { Class<?> lookAndFeelClass = Class.forName("com.example.CustomLookAndFeel"); LookAndFeel lookAndFeel = ...
提供了一些实用方法,如静态方法`SwingUtilities.invokeLater()`用于确保组件在事件调度线程中更新,防止出现线程安全问题。 通过以上介绍,我们可以看到Swing提供了丰富的功能和灵活性,让开发者能够构建出符合...
2. **系统LookAndFeel**:通过调用`UIManager.setLookAndFeel()`方法并传递系统LookAndFeel类名,如`javax.swing.plaf.metal.MetalLookAndFeel`,可以切换到与用户操作系统一致的界面风格。 3. **跨平台LookAndFeel...
8. **Swing utilities**:Swing还提供了一些实用工具类,如SwingUtilities类,其中包含了许多静态方法,如invokeLater()用于在事件调度线程中执行任务,这对于更新用户界面至关重要。 9. **Swing组件的扩展和自定义...
JOptionPane类在Swing中扮演着关键角色,它提供了一系列静态方法用于创建各种标准对话框,如确认对话框、输入对话框、消息对话框以及选项对话框。这些对话框均为模式对话框,意味着它们会阻止用户与主窗口的其他部分...
本篇文章将深入探讨静态文本的动态生成方法及其应用场景。 首先,我们要理解静态文本与动态生成文本的区别。静态文本是预先写入代码或存储在资源文件中的,它们在程序运行前就已经确定,不随程序执行改变。而动态...
- 在多窗口环境中,数据共享通常通过公共对象或者静态变量来实现,但这可能会导致复杂性和线程安全问题。在本示例中,采用发消息机制,即事件驱动的方式,避免了这些问题。 3. **事件监听与事件处理**: - Swing...
开发者可以通过实现这些监听器接口的方法来定义如何响应特定类型的事件。 #### 7. 定制外观和感觉 Swing提供了强大的定制能力,可以通过设置不同的`LookAndFeel`来改变应用程序的整体外观。Java自带了几种标准的...
`SpringUtilities`类则提供了一些静态方法,方便开发者更容易地使用`SpringLayout`。 在Eclipse中,使用`swing-layout-1.0.jar`库文件可以提升Java Swing应用的界面设计效率和用户体验。开发者可以通过引入这个库,...
功能描述: 收银员可登录系统,进行收银、会员管理、商品管理、查看消费记录操作; 对会员信息进行查询、添加、...当前为静态版,不使用数据库,数据库版本见https://download.csdn.net/download/u011731544/88308870
要更改Swing应用程序的皮肤,首先需要导入javax.swing.UIManager类,并调用其静态方法`setLookAndFeel()`。下面是一个简单的示例,演示如何将L&F更改为Nimbus: ```java try { UIManager.setLookAndFeel(...
- **JLabel**:用于显示静态文本或图像。 - **JList**、**JComboBox**:列表和下拉选择器。 - **高级组件**: - **JTable**:表格组件,用于展示数据集。 - **JTree**:树形结构组件,用于展示层级关系的数据。 ...
- **JLabel**: 是最基础的Swing组件之一,主要用于显示静态文本或图标。 - **方法**: - `setText(String text)`: 设置显示的文本。 - `setIcon(Icon icon)`: 设置显示的图标。 - `setHorizontalAlignment(int ...
`main` 方法通过 `EventQueue.invokeLater` 来确保在事件调度线程中创建和显示GUI,这是Swing应用的标准启动方式,以避免线程同步问题。`UIManager.setLookAndFeel` 方法被用来设置界面外观,这里使用了 ...
`JLabel`常用来展示静态文本或者图像。你可以通过`setIcon`方法设置图标,`setText`方法设置文本。例如: ```java JLabel label = new JLabel("欢迎使用", JLabel.CENTER); ``` `JPanel`是一个容器,可以用来组合...