代码如下:
-------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.TimerTask;
import javax.swing.*;
public class RepaintCom {
JFrame f = new JFrame();
int step = 0;
int isRun = 0;
WorkListJPanel www;
public RepaintCom() {
BackgroundJPanel bg = new BackgroundJPanel();
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
bg.setBounds(0, 0, scrSize.width, scrSize.height);
f.setSize(scrSize.width, scrSize.height);
f.getLayeredPane().setLayout(new BorderLayout());
f.getLayeredPane().add(bg, BorderLayout.CENTER);
f.setUndecorated(true);
www = new WorkListJPanel();
www.setVisible(false);
f.getContentPane().add(www);
com.sun.awt.AWTUtilities.setWindowOpacity(f, 0.3f);
f.setVisible(true);
timer();
}
public void toDisplay() {
float opa = com.sun.awt.AWTUtilities.getWindowOpacity(f);
opa = opa + 0.01f;
if (opa <= 1) {
com.sun.awt.AWTUtilities.setWindowOpacity(f, opa);
}
}
public void toHidden() {
float opa = com.sun.awt.AWTUtilities.getWindowOpacity(f);
opa = opa - 0.11f;
if (opa >= 0) {
com.sun.awt.AWTUtilities.setWindowOpacity(f, opa);
}
}
java.util.Timer t = null;
private void timer() {
//final //new java.util.Timer(true);
Thread startT = new Thread(new Runnable() {
public void run() {
while (true) {
if (isRun == 1) {
continue;
}
//Show.println(" to runing");
if (step == 0) {
t = new java.util.Timer(true);
t.schedule(new TimerTask() {
public void run() {
// Show.println("to dispaly");
toDisplay();
}
}, 100, 20);
isRun = 1;
continue;
} else if (step == 1) {
t = new java.util.Timer(true);
t.schedule(new TimerTask() {
public void run() {
// Show.println("to hidden" + com.sun.awt.AWTUtilities.getWindowOpacity(f));
toHidden();
}
}, 100, 20);
isRun = 1;
continue;
} else if (step == 2) {
t = new java.util.Timer(true);
t.schedule(new TimerTask() {
public void run() {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
www.setVisible(true);
}
});
toDisplay();
}
}, 100, 20);
isRun = 1;
continue;
} else if (step == 3) {
break;
}
}
}
});
startT.start();
Thread lisentnerT = new Thread(new Runnable() {
public void run() {
while (true) {
if (step == 0) {
if ((com.sun.awt.AWTUtilities.getWindowOpacity(f) + 0.01f) > 1) {
t.cancel();
isRun = 0;
step = 1;
continue;
}
} else if (step == 1) {
if ((com.sun.awt.AWTUtilities.getWindowOpacity(f) - 0.01f) < 0) {
t.cancel();
isRun = 0;
step = 2;
continue;
}
} else if (step == 2) {
if ((com.sun.awt.AWTUtilities.getWindowOpacity(f) + 0.01f) > 1) {
t.cancel();
isRun = 0;
step = 3;
break;
}
}
}
}
});
lisentnerT.start();
}
/**
* @param args
*/
public static void main(String[] args) {
new RepaintCom();
}
}
//程序其实页面背景,启动时第一个页面的背景
class BackgroundJPanel extends JPanel {
public BackgroundJPanel() {
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
javax.swing.ImageIcon background = new javax.swing.ImageIcon("sour/start_t.png");
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
g.drawImage(background.getImage(), 0, 0, scrSize.width, scrSize.height, background.getImageObserver());
}
}
//获得想定的作业列表控件
class WorkListJPanel extends JPanel {
JLabel jl;
JPanel titlePanel;
public WorkListJPanel() {
ini();
}
private void ini() {
jl = new JLabel() {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("黑体", Font.BOLD, 45));
g2.setColor(Color.yellow);
g2.drawString(" 当 前 所 有 作 业 :", 39, 69);
g2.drawString(" 当 前 所 有 作 业 :", 41, 71);
g2.setColor(new Color(Integer.parseInt("18533f", 16)));
g2.drawString(" 当 前 所 有 作 业 :", 40, 70);
}
};
jl.setPreferredSize(new Dimension(300, 100));
jl.setHorizontalTextPosition(SwingConstants.LEFT);
titlePanel = new JPanel() {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
javax.swing.ImageIcon background = new javax.swing.ImageIcon("sour/title_bg.png");
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage bf = new BufferedImage(45, 100, BufferedImage.TYPE_INT_ARGB);
Graphics2D gggg = bf.createGraphics();
gggg.drawImage(background.getImage(), 0, 0, scrSize.width, 140, background.getImageObserver());
g2.drawImage(bf, 0, 0, scrSize.width, 140, background.getImageObserver());
}
};
titlePanel.setLayout(new BorderLayout());
titlePanel.add(jl, BorderLayout.CENTER);
titlePanel.add(new CloseWinButton(), BorderLayout.LINE_END);
titlePanel.setOpaque(false);
// jl.setBorder(new LineBorder(Color.blue, 1, true));
//titlePanel.setBorder(new LineBorder(Color.red, 1, true));
this.setLayout(new BorderLayout());
this.add(titlePanel, BorderLayout.PAGE_START);
}
javax.swing.ImageIcon background = new javax.swing.ImageIcon("micai.png");
Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g.drawImage(background.getImage(), 0, 0, scrSize.width, scrSize.height, background.getImageObserver());
// 细致渲染、绘制背景,可控制截取图片,显示于指定的JPanel位置
//g2.drawImage(background.getImage(), 0, 0, scrSize.width, scrSize.height,0, 0, background.getIconWidth(), background.getIconHeight(), background.getImageObserver());
int x = 0, y = 0;
while (y < scrSize.height + background.getIconHeight()) {
while (x < scrSize.width + background.getIconWidth()) {
g2.drawImage(background.getImage(), x, y, background.getIconWidth(), background.getIconHeight(), background.getImageObserver());
x = x + background.getIconWidth();
}
x = 0;
y = y + background.getIconHeight();
}
}
private long selectedId;
}
//关闭窗口的右上角按钮
class CloseWinButton extends JButton {
public CloseWinButton() {
this.setToolTipText("退出系统");
this.setPreferredSize(new Dimension(45, 100));
this.setContentAreaFilled(false); //不绘制内容区域
this.setBorderPainted(false); //不绘制边框
this.setFocusPainted(false); //不绘制焦点状态
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
@Override
public void mouseEntered(MouseEvent e) {
image = "sour/closeO.png";
}
@Override
public void mousePressed(MouseEvent e) {
image = "sour/closeD.png";
}
@Override
public void mouseExited(MouseEvent e) {
image = "sour/closeI.png";
}
});
}
String image = "sour/closeI.png";
@Override
protected void paintComponent(Graphics g) {
javax.swing.ImageIcon background = new javax.swing.ImageIcon(image);
BufferedImage bf = new BufferedImage(45, 100, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = bf.createGraphics();
g2.drawImage(background.getImage(), 0, 0, 45, 100, background.getImageObserver());
g.drawImage(bf, 0, 0, 45, 100, background.getImageObserver());
super.paintComponent(g);
}
@Override
public Component add(Component comp) {
return super.add(comp);
}
}
附件中是用到的图片
//
//问题:
// 1为什么鼠标在关闭按钮上悬停一会,附近区域就会发生变化,鼠标移动一下就会把后面一层的背景显示出来。
// 2为什么后台有异常发生。java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
问题补充:这是一个程序启动动画效果的程序,通过渐变显示一个界面然后再切换到主程序界面
相关推荐
Java Swing 是Java图形用户界面(GUI)工具包的一部分,它允许开发者创建丰富的桌面应用程序。在“Java Swing画随机圆”这个题目中,学生被要求利用Java Swing库来创建一个程序,该程序能够在屏幕上动态地绘制出大小...
渲染器是决定组件如何显示元素的类,我们需要重写`paintComponent()`方法,以便在下拉框中显示已选中的多个选项。 3. **Custom Model**:JComboBox的模型(DefaultComboBoxModel)需要扩展以支持多选。这可能涉及到...
在Java Swing中,我们可以使用`JPanel`或者`JComponent`作为画布,通过重写`paintComponent`方法来绘制迷宫。每个通道可以用不同颜色的线条表示,墙则用不同的颜色填充。 **迷宫自动寻路**: 迷宫的自动寻路同样...
Java编程实现swing圆形按钮实例代码 Java编程实现swing圆形按钮实例代码主要介绍了Java编程实现swing圆形按钮实例代码,涉及两个简单的Java实现按钮的代码,其中一个具有侦测点击事件的简单功能,具有一定借鉴价值...
Java Swing是Java GUI(图形用户界面)库,用于构建桌面应用程序。在本案例中,"java swing围棋游戏"是一个基于Swing开发的围棋应用程序。它提供了用户友好的图形界面,让用户能够在线上或本地环境中玩围棋游戏。让...
这个自定义的`Component`通常会继承`javax.swing.JComponent`或`java.awt.Component`,然后重写`paintComponent(Graphics g)`方法。`Graphics`对象是Java提供的绘图接口,它提供了各种绘图操作,如线条、形状和颜色...
Java Swing 是Java编程环境中用于构建图形用户界面(GUI)的一个工具包,它是Java Foundation Classes (JFC) 的一部分。在本项目"java swing飞机大战小游戏"中,开发者使用了Swing来创建一个简单的飞机大战游戏,这...
在Swing中,我们可以使用JPanel作为游戏的画布,通过重写paintComponent方法绘制游戏画面,并通过定时器控制游戏的帧率和逻辑更新。这个文件可能包含了游戏逻辑、蛇的移动规则、食物生成以及碰撞检测等功能。 `...
在Swing中,我们可以使用JPanel或者自定义的图形组件来绘制这些方块,通过重写paintComponent方法实现图形绘制。 事件处理是JavaSwing中的关键部分。为了响应用户的键盘输入,如方向键控制方块的移动,我们需要添加...
在俄罗斯方块游戏中,每个方块都是一个简单的矩形,开发者需要在指定的JPanel上重写paintComponent方法进行绘制。 5. **游戏逻辑**:游戏的核心部分是逻辑处理,包括方块的生成、下落、碰撞检测、消除行、得分计算...
Java Swing小游戏是一个适合初学者练习和提升编程技能的项目,主要使用了Java的图形用户界面(GUI)库Swing来创建交互式的游戏程序。Swing是Java标准版(Java SE)的一部分,提供了丰富的组件和工具,可以构建出美观...
Java Swing 是Java GUI(图形用户界面)开发的一个重要库,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。贪食蛇游戏是一款经典的游戏,它简单易玩,且适合初学者学习编程逻辑。在Java Swing中...
2. **自定义组件**:创建一个继承自JComponent的类,重写paintComponent方法,使用Graphics2D对象进行绘图。这包括绘制蛇的身体、食物以及其他可能的游戏元素。 3. **事件处理**:使用KeyListener或者...
在游戏界面中,JPanel将被用作游戏画布,开发者可以重写其paintComponent方法进行自定义绘制,如绘制游戏背景、角色、障碍物等。 接着,游戏的核心逻辑会涉及到事件处理和定时器。事件处理是响应用户输入,例如键盘...
开发者会利用`paintComponent()`方法重写,以在JPanel上画出游戏中的方块和游戏界面。 4. **事件处理**: - Java Swing支持事件监听机制。开发者会为键盘事件(如方向键控制方块移动)和鼠标事件(可能的暂停或...
Java Swing 是 Java 平台上的一个图形用户界面(GUI)工具包,提供了丰富的组件用于创建桌面应用程序。本文将深入解析如何利用 Java Swing 构建一个简单但功能完备的图片查看器。 #### 主要组件 这个图片查看器由...
在“JAVASWING多线程产生随机球”的项目中,开发者利用Swing创建了一个互动的应用程序,用户可以通过鼠标点击在界面上生成一个球体,这个球体会以随机的方向和速度在窗口内移动。下面将详细解释这个项目涉及的知识点...
开发者可能在JPanel的paintComponent方法中重写,进行定制化的图形绘制。 3. **事件监听**:Java Swing 提供了键盘监听机制,让玩家可以通过键盘控制蛇的移动。开发者可能注册了KeyListener或使用Key Bindings来...
Java Swing是Java语言中的一种图形用户界面(GUI)组件库,提供了大量的GUI组件,例如按钮、标签、文本框、列表框等,用于构建桌面应用程序。Java Swing是Java标准库的一部分,提供了一个跨平台的解决方案来构建GUI...
这是一个基于Java Swing的推箱子游戏。游戏界面由一个名为PushBoxGame的类实现,其中包含了游戏的迷宫布局信息以及方块的移动逻辑。游戏通过四个按钮实现方块的移动,玩家需要通过移动方块,将箱子推到指定的位置。...