Tag: jframe

如何在JFrame中正确刷新图像?

这是一个让我困扰几个小时的问题,我自己找不到解决办法…… 我在网上找到了类似的主题,但我找不到完全相同的问题,并且解释得很好,解决方案尽可能简单。 我也看过EDT和SwingWorker API文档,但对我来说这太复杂了:( 所以,让我们谈谈这一点。 我有一个简单的JFrame里面有JLabel,它由我的图像组成: private static class MyJLabel extends JLabel { private ImageIcon img = null; public MyJLabel(ImageIcon img) { super(); this.img = img; } @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img.getImage(), 0, 0, getWidth(), getHeight(), this); } } private static class MyJFrame extends JFrame implements Runnable { private BufferedImage img = […]

在绘制图像时,jFrame GetGraphics在java中为null

我将图像绘制到jframe时出现nullexception错误。 我调试代码并检查图像和帧不是null但仍然在绘制图像到帧时抛出NULLexception。 请看一看 : public void run(){ try{ ObjectInputStream objVideoIn = new ObjectInputStream(serVideoIn); byte[] imgbytes=null; ByteArrayInputStream barrin=null; JFrame jf = new JFrame(); Graphics ga=jf.getGraphics(); //Getting null exception //Thread.sleep(10000); jf.setVisible(true); jf.setSize(400, 400); while(true){ int index=0; //Thread.sleep(300); int size= (int)objVideoIn.readObject(); imgbytes = new byte[size]; barrin = new ByteArrayInputStream(imgbytes); System.out.println(“image size” + size); //Thread.sleep(200); while(index<size) { System.out.println("reading image"); […]

单击按钮时JFrame不会打开

我有两个JFrame 。 public class Main extends JFrame public class ColourOption extends JPanel implements ActionListener ,然后在JFrame中设置它。 当我点击第一个JFrame的按钮时,我想打开第二个JFrame .setVisible()不起作用。 我还尝试了revalidate() ,以及第二个JFrame中的invalidate() , validate() 。 它不起作用的原因是什么?

Java扫描程序问题(JFrame)

我正在尝试使用扫描仪编辑塔防游戏的等级。 但是它不会将级别(平铺图像)更新为自定义文件的级别(0是草1是石头-1是什么,等等)。 我找到了错误,但我如何解决它,我需要添加/更改什么来摆脱这个? java.lang.NullPointerException at Levels.loadLevels(Levels.java:11) at Window.define(Window.java:28) at Window.paintComponent(Window.java:44) 第11行: for(int y=0;y<Window.room.block.length;y++) {第28行: levels.loadLevels(new File(“levels/level1.level”)); 第44行: define(); 这是扫描仪文件: import java.io.*; import java.util.*; public class Levels { public void loadLevels(File loadPath) { try { Scanner loadLevelsScanner = new Scanner(loadPath); while(loadLevelsScanner.hasNext()) { for(int y=0;y<Window.room.block.length;y++) { for(int x=0;x<Window.room.block[0].length;x++) { Window.room.block[y][x].groundID = loadLevelsScanner.nextInt(); } } for(int y=0;y<Window.room.block.length;y++) { […]

简单的JFrame程序但看不到JTextfield

我正试着自己学习Swing。 我正在玩玩具程序,要求用户输入他们的名字。 我将JLabel和JTextfield放入JPanel,用户可以在其中输入名称并提交。 然而,我的JTextfield被压扁并且看不见,我无法让它显示(我试过“setSize”无济于事)。 这是我的代码: import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class NamePrompt extends JFrame{ private static final long serialVersionUID = 1L; String name; public NamePrompt(){ setLayout(new BorderLayout()); JLabel enterYourName = new JLabel(“Enter Your Name Here:”); JTextField textBoxToEnterName = new JTextField(); textBoxToEnterName.setSize(40, 10); JPanel panelTop = new JPanel(); panelTop.add(enterYourName); panelTop.add(textBoxToEnterName); JButton submit […]

如何在JFrame中设置glasspane的位置?

我正在尝试从框架的左侧创建一个菜单滑块。 它需要浮动在内容之上,我可以使用鼠标监听器来访问它(当鼠标靠近左边缘时打开菜单)。 好吧,我将我的GlassPane(我的JPanel)设置为setOpaue(false),它漂浮在内容之上。 但是玻璃板总是位于中心位置,我需要有可能移动它,滑动它,但没有运气。 setBounds和setLocation对我不起作用。 任何人都可以帮我这个吗? 代码的一部分: public class MYFrame extends JFrame { public MYFrame(){ this.setLayout(new BorderLayout()); this.add(panel1,BorderLayout.NORTH); this.add(panel2,BorderLayout.CENTER); this.add(panel3,BorderLayout.EAST); this.getRootPane().setGlassPane(new MyGlass()); this.getRootPane().getGlassPane().setVisible(true); this.setVisible(true); } public class MyGlass extends JPanel{ ImageIcon imageIcon = new ImageIcon(“BG.png”); JLabel label = new JLabel(imageIcon); public MyGlass(){ this.add(label); this.setOpaque(false); this.pack(); this.setVisible(true); } } }

JFrame无法全屏显示所有图像

所以,我正在开展一个需要在图像之间切换的项目。 图像需要处于全屏模式。 我似乎面临着两个问题。 首先是图像切换。 当我在图像之间切换时,切换时某些图像显示正常。 其他人似乎根本不会出现在屏幕上。 我似乎只是得到一个空框架。 其次是正确的键似乎每次都有效,但仅仅为了我的理智,我已经放了系统打印。 系统似乎没有显示在控制台上,但它在框架中切换图像(尽管我有时会得到一个空框架)。 任何建议/解决方案将受到高度赞赏。 关于代码的注意事项:我所拥有的绘制字符串用于测试坐标。 我正在使用Eyetribe,所以只是为了显示我正在寻找的位置。 束带似乎完美无缺。 此外,我正在快速调用switchImage,几乎每秒22次。 这可能是个问题吗? 虽然它让我想知道为什么它适用于某些图像而不适用于其他图像。 更新:问题似乎在g.drawImage中。 它似乎没有绘制一些图像,但我似乎无法弄清楚为什么会发生这种情况。 目前这是我的全屏图像代码。 public void showFrame(){ //jL -> JLabel //jF -> JFrame //jP -> Panel jF.setTitle(“Test”); jF.setUndecorated(true); jF.setResizable(false); jF.setVisible(true); Toolkit tk = Toolkit.getDefaultToolkit(); int xsize = (int)tk.getScreenSize().getWidth(); int ysize = (int)tk.getScreenSize().getHeight(); jF.setSize(xsize, ysize); jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); if(testImagesList != null){ img = […]

Java – 单击按钮后绘制圆圈

我试图用java中的按钮画一个圆圈。 我将System.out.println()放在action方法中以确保我的代码正常工作。 println显示但在任何地方都没有圆绘图。 有什么建议? 谢谢 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class CircleViewer { public static void main(String[] args) { CircleComponent circle = new CircleComponent(); JButton button = new JButton(“Draw”); final JPanel panel = new JPanel(); panel.add(button); JFrame frame = new JFrame(); class addActionListener implements ActionListener { public […]

Java – 在双显示器上移动未修饰的程序

我做了一个未修饰的Java程序。 我在双显示器上工作。 但是当我尝试在第二台显示器上移动程序时,它不起作用.. 这是截图说明 所以我有2个类: Main.java类: package undecorated; import java.awt.CardLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.sql.SQLException; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; public class Main extends JFrame implements ActionListener, MouseListener { private static final long serialVersionUID = […]

如何在Java中绘制图像?

我使用JFrame导入并显示图像,并使用mousemotionlistener来检测鼠标点击,我希望能够在图像上绘制。 我想能够,如果用户点击,使该像素成为某种颜色,同时保留图像的其余部分,但是,我无法找到如何使用图形这样做而不删除图像的其余部分或者打开一个新窗口。 public class Simple extends JFrame{ static ImageIcon icon; static JFrame myframe; static JLabel mylabel; static BufferedImage image = null; public static void main(String[] args) { try{ image = ImageIO.read(new File(“mypic.png”)); } catch (IOException e) { e.printStackTrace(); } icon=new ImageIcon(image); myframe=new JFrame(); myframe.setSize(200,200); myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mylabel=new JLabel(); mylabel.setIcon(icon); myframe.getContentPane().add(mylabel); myframe.pack(); Container container = myframe.getContentPane(); MouseMotionEvents3 […]