Tag: awt

Bufferstrategy没有显示在java.awt.Frame上

public void configure() { Frame frame = ctx.getFrame(); frame.setTitle(“AstroCycles | By: Carlos Aviles”); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.setFocusable(true); frame.setSize(WIDTH, HEIGHT); frame.addKeyListener(ctx.getKeyEventDispatcher()); frame.addWindowListener(ctx.getWindowEventDispatcher()); frame.addMouseListener(ctx.getMouseEventDispatcher()); frame.setVisible(true); frame.createBufferStrategy(3); frame.getBufferStrategy().getDrawGraphics().setColor(Color.RED); frame.getBufferStrategy().getDrawGraphics().fillRect(0, 0, 75, 75); frame.getBufferStrategy().getDrawGraphics().dispose(); frame.getBufferStrategy().show(); } 框架正在显示,但框架上未显示具有所请求坐标和大小的矩形(红色)。 我不知道为什么它不是画画。 控制台没有抛出任何错误。 BufferStrategy也不是null。

是否可以编写自己的对象来提供ActionEvent?

我已经在线查看了java教程,他们似乎都关注捕获已经编写过的其他组件给出的ActionEvents。 是否有可能编写自己的对象,这些对象具有触发actionEvents的标准集,然后可以被已注册为侦听器的其他类捕获? 例如:如果我想要一个计算绵羊的对象发送一个actionEvent,当100只绵羊被计入所有已注册为听众的睡眠对象时。 有没有办法做到这一点有任何在线教程? 任何帮助是极大的赞赏。

如何在jpanel之间切换?

我仍然是java编程的新手,所以请帮助我纠正我可能忽略的任何错误或提供有关如何改进此程序的提示。 好的,所以很多问题都解决了,现在我有了一个CardLayout,但我仍然对如何让我的管道显示在里面有疑问。 当我尝试添加刷新率计时器和我的速度计时器时,我遇到了如何声明和初始化布尔变量的问题。 此外,当我编译并运行此游戏时,我会获得诸如Game$1.class文件。 有没有办法让我清理它,有人可以解释为什么会这样吗? 这些对成品有影响吗? (当游戏编译并打包成JAR时。) 我想在点击播放按钮时将playerIsReady设置为true。 从那里,当if语句为真时,然后切换到显示管道的面板,并开始在屏幕上移动管道。 最好是3个管道的实例,每个实例在不同的时间开始,但无论你有什么帮助,都可以。 这些代码中的一些需要工作,所以我已经注释了一些部分并留下了注释。 我可以在这里找到关于这个游戏的其他问题。 这是我目前的代码 Game.java import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; import javax.swing.border.EmptyBorder; import javax.swing.SwingUtilities; public class Game { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run() { // the […]

在卡布局内定位组件

我有一个主框架,我想用卡片布局在中心位置显示我的NewUser类的对象。这是我的主要课程 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CardLayoutDemo implements ItemListener { JPanel cards; //a panel that uses CardLayout final static String BUTTONPANEL = “Card with JButtons”; final static String TEXTPANEL = “Card with JTextField”; public void addComponentToPane(Container pane) { //Put the JComboBox in a JPanel to get a nicer look. JPanel comboBoxPane = […]

使用setText清除TextField的内容在AWT中不起作用

我在使用setText()方法清除AWT中的TextField内容时遇到问题。 显然, setText(“”)在按下“重置”按钮时不会清除TextField的内容。 这是我的计划: import java.awt.*; import java.awt.event.*; public class form extends Frame { Label lbl = new Label(“Name:”); TextField tf = new TextField(); Button btn = new Button(“Reset”); public form() { tf.setColumns(20); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tf.setText(“”); //Problem occurs […]

在AWT队列线程中调试exception

我正在开发一个Swing应用程序,其中包含执行自定义绘制的组件 当我在绘制代码中犯了一些错误并抛出exception时,情况很难调试。 弹出窗口显示exception信息,而不是被调试器捕获。 此外, 线程似乎重新启动 ,并且由于编码错误的结果exception,它会一次又一次地显示。 当我很幸运地切换到调试器时(这很困难,因为越来越多的弹出窗口随着应用程序获取绘制请求而不断出现),调试控制台会向我显示一个exception信息,例如: 严重:线程中抛出未捕获的exception[AWT-EventQueue-0,6,main] ….堆栈如下 我的应用程序是用Scala编写的,我使用的是IntelliJ IDEA 14.我的未捕获的主线程exception由调试器处理得很好(我在Java Exception Breakpoints启用了Any exception断点的Uncaught exception ),但AWT线程中的exception不是。 我已经尝试过安装一个处理程序,如下所述我如何检测何时在Java中全局抛出exception? 回答 ,但我的处理程序似乎没有被触发。 我想实现以下(按重要性顺序): 避免AWT线程在exception时重新启动,或者至少阻止弹出窗口显示 在调试器中处理未捕获的exception,而不是在控制台中打印 (注意:虽然这是Scala应用程序,但我认为Java的行为是相同的,因此Java标记)。

使整个窗口居中Java

我的问题很简单,我猜…我想在运行程序时让我的java框架居中。 我使用了以下代码: setLocationRelativeTo(null); 问题: 这是框架的左上角,它居中但不是整个框架。 我怎么能纠正这个问题,让整个框架居中? 感谢您的帮助!

Java awt.Robot:CTRL + ALT + DEL没有显示所需的屏幕

我刚刚发现了关于awt.Robot库的内容,我很高兴能够使用它。 我以为我会对我的朋友玩一个小恶作剧,并有机器人按下控制,alt,删除按下锁定电脑按钮,但我无法让程序调出控制alt删除屏幕。 这是我的代码: import java.awt.*; import java.awt.event.KeyEvent; public class Bot { public static void main(String[] args) { try { Robot bot = new Robot(); bot.delay(4000); bot.keyPress(KeyEvent.VK_CONTROL); bot.delay(100); bot.keyPress(KeyEvent.VK_ALT); bot.delay(100); bot.keyPress(KeyEvent.VK_DELETE); bot.delay(500); bot.keyRelease(KeyEvent.VK_CONTROL); bot.keyRelease(KeyEvent.VK_ALT); bot.keyRelease(KeyEvent.VK_DELETE); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void pressEnter(Robot bot) { bot.keyPress(KeyEvent.VK_ENTER); bot.delay(40); […]

半透明窗口内的半透明JPopupMenu – 另类?

我不确定这是否可行,但有没有办法安全地允许弹出窗口是半透明的,即使父容器也是半透明的? 如果没有, 使用或扩展而不是JPopupMenu明智替代方案是什么? 注意: 半透明是指不具有“背景”的组件,类似于setOpaque(false);的效果setOpaque(false); 。 谢谢。 来自2009年用户camickr的论坛回答: 我不知道透明画在1.6.0_10中是否有所改变。 在此之前,我认为透明度只能在轻量级组件中实现(即Swing完成所有绘画)。 JFrame,JWindow和JDialog不是轻量级的,因为它们使用OS组件。 在弹出窗口的情况下,它完全包含在其父帧中时是轻量级的。 但是一个轻量级的弹出窗口不能在框架的边界外绘制,所以JWindow(我相信)被用作弹出窗口,它不能透明。 SSCCE:在半透明的JFrame顶部显示半透明的JWindow import com.sun.awt.AWTUtilities; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class OpaqueWindowSSCCE { private int countdown = 5; public static void main(String[] args) { new OpaqueWindowSSCCE(); } public OpaqueWindowSSCCE() { final JFrame frame = […]

Java:获取一个/所有可用监视器(而不是整个桌面)的分辨率?

我有两个不同大小的显示器,使用(我相信)TwinView连接在一起。 我试过了 System.out.println(Toolkit.getDefaultToolkit().getScreenSize()); 得到 java.awt.Dimension[width=2960,height=1050] 如果将两个显示器统计在一起 ,则为真。 取而代之的是,我希望能够实现以下目标之一 : 获得当前监视器的分辨率 获得主显示器的分辨率