我目前正在学习Java,目前我仍然坚持使用.
我一直在寻找一种方法来将图像添加到我的JFrame中.我在网上发现了这个:
ImageIcon image = new ImageIcon("path & name & extension");
JLabel imageLabel = new JLabel(image);
Run Code Online (Sandbox Code Playgroud)
在将其实现到我自己的代码之后,它看起来像这样(这只是相关部分):
class Game1 extends JFrame
{
public static Display f = new Display();
public Game1()
{
Game1.f.setSize(1000, 750);
Game1.f.setResizable(false);
Game1.f.setVisible(true);
Game1.f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Game1.f.setTitle("Online First Person Shooter");
ImageIcon image = new ImageIcon("C:\\Users\\Meneer\\Pictures\\image.png");
JLabel imageLabel = new JLabel(image);
add(imageLabel);
}
}
class Display extends JFrame
{
}
Run Code Online (Sandbox Code Playgroud)
运行此代码时,它不会给我任何错误,但它也不显示图片.我看到了一些问题和人们有同样的问题,但他们的代码与我的完全不同,他们使用其他方式来显示图像.
我最近正在尝试创建一个程序,就像teamviewer一样。进展还算顺利,但我目前面临一个问题。
我试图让我的程序通过套接字发送图像。当我运行这段代码时,它从不输出“应该发送图像!”,所以我认为问题出在 ImageIO.write 行中。
BufferedImage screencapture = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
try {
ImageIO.write(screencapture, "jpg", socket.getOutputStream());
System.out.println("Image should be sent!");
} catch (IOException ex){
ex.printStackTrace();
} finally {
if ( socket != null ){
try { socket.close(); } catch (IOException ex){}
}
System.out.println("Image sent and socket closed!");
}
Run Code Online (Sandbox Code Playgroud)
另一边还有一个客户端,消耗上面代码发送的数据。执行此操作的代码是:
BufferedImage image = ImageIO.read(socket.getInputStream());
JLabel label = new JLabel(new ImageIcon(image));
f.getContentPane().add(label);
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,这段代码有什么问题,我该如何使它工作?
我正在寻找一种将整数划分为整数的方法。我的意思是:如果我有数字30,并且想将其除以4,则希望输出为8,8,7,7。Java中有没有办法做到这一点?提前致谢。