这是 JFrame
package client.connection;
import java.awt.Dimension;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JFrame;
class DrawFrameRemoteControl extends JFrame
{
private DrawPanelRemoteControl imagePanel;
private ClientRemoteControlConnection clientRemoteControlConnection;
private ObjectInputStream clientInputStream;
private ObjectOutputStream clientOutputStream;
private Dimension imageDimension;
private Dimension serverDimension;
public DrawFrameRemoteControl(Dimension imageDimension,ClientRemoteControlConnection clientRemoteControlConnection,ObjectInputStream clientInputStream,ObjectOutputStream clientOutputStream,Dimension serverDimension)
{
super("Remote Desktop Control");
this.clientRemoteControlConnection=clientRemoteControlConnection;
this.clientInputStream=clientInputStream;
this.clientOutputStream=clientOutputStream;
this.imageDimension=imageDimension;
this.serverDimension=serverDimension;
imagePanel=new DrawPanelRemoteControl(imageDimension);
add(imagePanel);
setSize(imageDimension.width,imageDimension.height);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}
void drawNewImageGrayscale(byte[] array)
{
imagePanel.setNewImageGrayscale(array);
imagePanel.repaint();
}
}
Run Code Online (Sandbox Code Playgroud)
这是扩展的JPanel类 -
package client.connection;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit; …Run Code Online (Sandbox Code Playgroud) 我正在整理一个幻灯片程序,用于衡量用户在每张幻灯片上花费的时间.幻灯片演示了几个不同的魔术技巧.每个技巧都会显示两次.在重复之间显示临时图像.在每个技巧之间显示过渡图像.
在第一次重复技巧时,在显示下一个图像之前,点击后,JPanel颜色在屏幕上闪烁.在第二次重复相同的技巧期间不会发生这种情况.图像可能需要很长时间才能加载.
是否有一种简单的方法来预加载图像,以便第一次没有延迟?
NOTE: Original code deleted.
Run Code Online (Sandbox Code Playgroud)
编辑2013年1月10日:此代码现在适用于较慢的计算机.trashgod的第二个附录帮助最多.mouseClick控件结构定期要求SwingWorker类加载40个或更少的当前技巧,同时还将使用过的图像设置为null.我已经将我的代码简化为两个Image []并添加了一个main方法,因此它是独立的.仍然需要运行图像.现在这是非常简单的代码,如果你想用大量图片制作幻灯片,我认为这将是一个很好的起点.
注意:我想我在使用多个Image []时想出了如何正确实现SwingWorker.trashgod和kleopatra这个实现符合你的建议吗?我最终没有使用发布和进程,因为我无法弄清楚如何使用索引数组正常工作,但因为StringWorker没有加载数组中的所有图像(只有40)和代码调用StringWorker每20个图像,应该有一个相当不错的缓冲区.
编辑1/10/2013通过在Mouse类上扩展MouseAdapter来改变MouseListener.还修复了我的paintComponent方法,以包含对super.paintComponent(g)的调用.向我的SwingWorker类ImageWorker添加了发布/处理方法.添加了一个包装类ArrayWrapper,允许传递imageArray [i]及其相应的索引int i,并使用publish进行处理.
package slideshow3;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.util.List;
public class SlideShow3 extends JFrame
{
//screenImage will be replaced with each new slide
private Image screenImage;
private int width;
private int height;
//Create panel for displaying images using paintComponent()
private SlideShow3.PaintPanel mainImagePanel;
//Used for keybinding
private Action escapeAction;
//Image array variables for each trick
private …Run Code Online (Sandbox Code Playgroud) 我正在制作JFrame纸牌游戏.我想JFrame在restartBtn点击时重新启动.谁能帮我?
该PlayGame课程将推出frame1
public class PlayGame {
public static void main(String[] args) {
GameFrame frame1 = new GameFrame();
// Set Icon
Image icon = Toolkit.getDefaultToolkit().getImage("image/poker_icon.gif");
frame1.setIconImage(icon);
frame1.setVisible(true);
frame1.setSize(600, 700);
frame1.setTitle("Card Game");
// Set to exit on close
frame1.setDefaultCloseOperation(GameFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
这是GameFrame类用于JFrame构造函数.
public class GameFrame extends JFrame implements ActionListener {
public JLabel restartLbl;
public JButton restartBtn
public GameFrame() {
restartLbl = new JLabel(restart);
restartBtn = new JButton();
restartBtn..addActionListener(this);
} …Run Code Online (Sandbox Code Playgroud) 我怎么会继续添加JLabel徘徊?就像当你将鼠标移到顶部时,JLabela和新图像会重叠.我知道如何使用按钮,但相同的技术不适用于JLabels.有人会引导我添加JLabel徘徊吗?拜托,谢谢.
package src;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/*
* @Author - 0x29A
*
*
*/
public class Jframe {
public static void main(final String args[]) {
/*
* @Images
*/
final ImageIcon icon = new ImageIcon("Data/button.png");
final JLabel label = new JLabel(icon);
final ImageIcon icon1 = new ImageIcon("Data/button1.png");
final JLabel label1 = new JLabel(icon1);
final ImageIcon icon2 = new ImageIcon("Data/button2.png");
final JLabel label2 = new JLabel(icon2);
final ImageIcon …Run Code Online (Sandbox Code Playgroud) 嗨,我正在做一个项目(卡匹配游戏),它几乎完成但事情是当我点击第二个按钮打开图片,如果它不一样,第一次突然关闭.好吧没有错,但用户必须看一下图片(可能是2秒).所以我使用Thread.sleep(2000)但我没有正常工作.它将icon设置为null,然后开始等待2秒.这是我的代码,试图制作一个SSCCE,
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.UIManager;
import javax.swing.border.*;
public class ConcentrationGame3 extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private int buttoncounter=0;
private int counter = 0;
private JFrame frame;
private JPanel mainPanel;
private …Run Code Online (Sandbox Code Playgroud)