Tag: awt

Graphics – 如何使用方法create(int x,int y,int width,int height)和translate(int x,int y)?

我正在尝试做我的计算机科学作业,但是当我试图使用以下方法时,我被卡住了。 public Graphics create(int x,int y,int width,int height) 即创建基于此Graphics对象的新Graphics对象,但具有新的转换和剪辑区域。 参数: x – x坐标。 y – y坐标。 width – 剪切矩形的宽度。 height – 剪切矩形的高度。 public abstract void translate(int x,int y) 将图形上下文的原点转换为当前坐标系中的点(x,y)。 任何人都可以解释并举例说明如何使用它们吗? 我试图这样做.. public Graphics drawPlayer1() { myPencil.up(); myPencil.move(-620,300); myPencil.down(); myPencil.fillCircle(20); myPencil.up(); myPencil.move(-590,300); myPencil.drawString(“Player1: ” + player1); p1.create(-620,300,40,40); return p1; }//end drawPlayer1 当它涉及到p1.create(-620,300,40,40)时,它给我一个nullPointerException;

着色BufferedImage的区域

我想为我拥有的BufferedImage的子区域着色。 我现在在做: public BufferedImage paintSubImage(BufferedImage img, int x, int y, int w, int h) { Graphics g = img.getGraphics(); g.setColor(Color.BLACK); g.fillRect(x,y,w,h); return img; } 但我无法给它着色。 我做错了吗?

将按钮组件添加到java中的java选项卡式窗格

我正在尝试使用java swings创建GUI。我只是java swings的初学者。 我的主要想法是创建两个选项卡,并在其中一个选项卡中添加一个按钮。 我想为每个选项卡编写一个单独的类,所以我创建了3个类,其中一个有主方法。另外两个代表选项卡。 在其中一个选项卡中,我想在中间添加一个按钮,并为该按钮添加一个动作侦听器。 下面是具有主要方法的类。 public class abc { JFrame frame; JTabbedPane tabPane; ImageIcon close; Dimension size; int tabCounter = 0; abc_export exp; abc_import imp; public static void main(String[] args) { abc jtab = new abc(); jtab.start(); } public void start(){ exp=new abc_export(); imp=new abc_import(); tabPane.addTab(null, exp.panel); tabPane.addTab(null, imp.panel); tabPane.setTabComponentAt(tabPane.getTabCount()-1, exp.tab); tabPane.setTabComponentAt(tabPane.getTabCount()-1, imp.tab); […]

KeyListener的多键检测(java)

如何实现KeyListener以便我可以创建一个双人系统,其中一个人使用’。’ 和’/’来控制一个角色,而另一个人可以使用箭头键而不会相互打断? 我现在的方式是,当一个人按住箭头键时,他们的角色会移动,但是当你使用其他玩家的控制时,第一个人的角色会停止。

Java GridBagConstraints gridx和gridy无法正常工作?

我试图使用gridx和gridy约束来定位我的按钮。 但他们不工作! 如果我更改gridx和gridy变量,则没有任何反应。 如果我将填充更改为GridBagConstraints为NONE ,它仍然无效。 我在这里错过了什么吗? import java.awt.*; import javax.swing.*; public class Window extends JFrame{ private static final long serialVersionUID = 1L; JFrame frame = new JFrame(“GUI”); JTextField username = new JTextField(20); public void CreateWindow(){ JPanel pane = new JPanel(); pane.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.NONE; JButton button = new JButton(“Button […]

我在调整Jframe大小时如何停止自动重绘()

我还在学习Java,如果有人能帮助我,我会很开心! 抱歉英语不好,我是西class牙语! 我正在制作一个平铺游戏,游戏使用经典的“游戏循环”,将引擎限制为60fps循环睡眠,然后调用repaint(); 这很好用! 但.. 问题是在调整JFrame大小或最大化时调用重绘事件! 例如,当JFrame最大化/resize时,游戏以10000fps渲染,但是当它们没有时,游戏以我设置的速度渲染,因此有一种方法可以禁用自动重绘并使其仅在“component.repaint()时工作” “从我的代码中调用? 这里的问题不是“游戏循环”,问题是当重新resize/最大化时,重绘被称为自动渲染更多fps的游戏! public class Handling { static private int fps=0; static private int fpsfinal=0; static int frames = 60; static int frames_skip = 1000 / frames; static long ticknext = GetTickCount(); static long ticksleep = 0; public static void Run() { for(;;){ Main.getDevice().repaint(); fps++; ticknext += frames_skip; ticksleep […]

Font.getNumGlyphs()返回的数字

Font.getNumGlyphs()返回的数字实际代表什么? 文档。 州: 返回此Font的字形数。 此Font字形代码范围从0到getNumGlyphs() – 1 。 我认为它表示0和Character.MAX_CODE_POINT之间的代码点数, Font.canDisplay(codePoint)返回true 。 但是下面代码的输出表明不然。 码 注意:对于超过200种字体,要经过100万个+代码点( countGlyphs方法),这里需要30秒。 运行时请耐心等待。 import java.awt.*; import java.util.Date; import javax.swing.*; import javax.swing.table.DefaultTableModel; class FontGlyphCheck { public static int countGlyphs(Font f) { int count = 0; for (int ii = 0; ii < Character.MAX_CODE_POINT; ii++) { if (f.canDisplay(ii)) { count++; } } return count; […]

Java中的形状组合?

java Shape接口契约和库例程是否允许将多个形状组合成一个扩展Shape接口的对象? 例如,我可以定义类Flower ,它将由花瓣和核心的几个椭圆组成? 或者Shape只假设一个连续的轮廓? 如果是这样,那么Java中是否存在用于保存多个形状的任何类,可能是某些用于矢量化图形的类?

Canvas fillRect()未填充已定义的canvas

我正在扩展Canvas并将其添加到JFrame 。 我知道AWT和Swing不应该是混合的,并且在JPanel上绘图是首选,但我正在尝试遵循游戏引擎教程,我想坚持它,因为我到目前为止工作。 Canvas将minimumSize , maximumSize和prefferedSize设置为maximumSize的尺寸。 当我进行绘图调用graphics.draw(0,0,550,400)它不会像应该的那样填满整个屏幕。 我将绘图调用更改为graphics.draw(0,0,560,410)基本上为它添加了10px,它填满了整个屏幕。 怎么了? BTW: graphics.draw(10,10,550,400从角落开始绘制矩形,所以我不认为JFrame是问题。 Launcher类内部的主要调用 public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { game.setMinimumSize(DIMENSIONS); game.setMaximumSize(DIMENSIONS); game.setPreferredSize(DIMENSIONS); game.frame = new JFrame(NAME); game.frame.setLayout(new BorderLayout()); game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); game.frame.add(game, BorderLayout.CENTER); game.frame.pack(); game.frame.setResizable(false); game.frame.setLocationRelativeTo(null); game.frame.setVisible(true); Logger.log(TAG, “Game starting”); game.start(); } }); } 平局调用, Launcher.HEIGHT和WIDTH为550,400 public void draw(float deltaTime, […]

在Java中为图像添加边框

我试图创建一个图像,通过将像素从旧位置复制到新坐标,在Java上为现有图像添加边框。 到目前为止,这就是我所做的: public static NewPic border (NewPic p, int borderWidth, Pixel borderColor) { int w = p.getWidth(); int h = p.getHeight(); Pixel src[][] = p.getBitmap(); Pixel tgt[][] = new Pixel[h][w]; for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { tgt[y][x + y + borderWidth] […]