我一直在尝试并且未能在OSX系统的主显示器上使用java全屏模式.无论我尝试过什么,我似乎都无法摆脱显示屏顶部的"苹果"菜单栏.我真的需要在整个屏幕上画画.谁能告诉我如何摆脱菜单?
我附上了一个展示问题的示例类 - 在我的系统上,菜单仍然可见,我希望看到一个完全空白的屏幕.
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class FullScreenFrame extends JFrame implements KeyListener {
public FullScreenFrame () {
addKeyListener(this);
setUndecorated(true);
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if (gd.isFullScreenSupported()) {
try {
gd.setFullScreenWindow(this);
}
finally {
gd.setFullScreenWindow(null);
}
}
else {
System.err.println("Full screen not supported");
}
setVisible(true);
}
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
setVisible(false);
dispose();
}
public static void main (String [] args) {
new FullScreenFrame();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个需要在屏幕上平滑滚动波形的java应用程序.我花了很多年的时间通过各种教程来弄清楚如何使这个动画尽可能顺畅.据我所知,我已经做了所有正常的事情来消除闪烁(绘制到屏幕外缓冲区并一步渲染,加上覆盖更新,因此屏幕不会消隐),但我的动画仍然闪烁,屏幕在每次更新之前看起来都被清空了.
我确信有一些基本的(也可能是简单的)我错过了,但我没有想法.我将在下面发布一个说明问题的课程.任何帮助将非常感激.
import java.awt.*;
import javax.swing.*;
public class FlickerPanel extends JPanel implements Runnable {
private float [] pixelMap = new float[0];
/** Cached graphics objects so we can control our animation to reduce flicker **/
private Image screenBuffer;
private Graphics bufferGraphics;
public FlickerPanel () {
Thread t = new Thread(this);
t.start();
}
private float addNoise () {
return (float)((Math.random()*2)-1);
}
private synchronized void advance () {
if (pixelMap == null || pixelMap.length == 0) return;
float [] newPixelMap = new …Run Code Online (Sandbox Code Playgroud) 我有一个反复出现的问题,我有一个JList,我希望用新内容更新.我正在使用DefaultListModel,它提供了向列表中添加新内容的方法,但是当使用这些方法时,我发现有一部分调用会导致一个完全空白的JList.更新是否有效似乎是随机的,与发送的数据无关.
下面是一个简单的程序,演示了这个问题.它只是生成一个增加大小的列表来更新JList,但是当运行时,列表内容似乎随机出现和消失.
据我所知,我正在遵循正确的API来做到这一点,但我想我必须有一些基本的东西,我不知道.
import java.awt.BorderLayout;
import javax.swing.*;
public class ListUpdateTest extends JPanel {
private JList list;
private DefaultListModel model;
public ListUpdateTest () {
model = new DefaultListModel();
list = new JList(model);
setLayout(new BorderLayout());
add(new JScrollPane(list),BorderLayout.CENTER);
new UpdateRunner();
}
public void updateList (String [] entries) {
model.removeAllElements();
for (int i=0;i<entries.length;i++) {
model.addElement(entries[i]);
}
}
private class UpdateRunner implements Runnable {
public UpdateRunner () {
Thread t = new Thread(this);
t.start();
}
public void run() {
while (true) {
int entryCount = …Run Code Online (Sandbox Code Playgroud) java ×3
swing ×2
animation ×1
awt ×1
concurrency ×1
flicker ×1
fullscreen ×1
jlist ×1
macos ×1
model ×1