平滑锯齿状路径

前几天我正在参与线程图像/图形到一个形状 ,并通过迭代地向Area添加一个Rectangle来尝试获取图像的轮廓。 那非常慢。 此示例改为构建GeneralPath并从GP创建Area 。 快多了。 左上角的图像是“源图像”。 右边的两个是处理轮廓的各个阶段。 它们都在圆周围并沿着三角形的倾斜边缘具有锯齿状边缘。 我希望获得一种能够消除或减少锯齿状的形状。 在ASCII艺术中。 情况1: 1234 1 ** 2 ** 3 *** 4 *** 5 **** 6 **** 角落在: (2,3)内角 (3,3) (3,5)内角 (4,5) 案例2: 1234 1 **** 2 **** 3 ** 4 ** 5 **** 6 **** 角落在: (4,2) (2,2)内角 (2,5)内角 (4,5) 假设我们的路径具有显示的形状和列出的点,我想删除第一组的“内角”点,同时保留“内部角落”(图像中的一对)第2位。 任何人都可以建议一些聪明的内置方法来完成这项工作的繁重工作吗? 如果做不到这一点,那么识别内角的位置和性质(对/单)的好方法是什么? (我猜我可以得到一个PathIterator并构建一个新的GeneralPath删除奇异的内角 – 如果我能想出如何识别它们的话!)。 […]

将图像设置为JPanel背景的最简单方法

如何在不创建新类或方法的情况下将背景图像添加到JPanel,只需将其与JPanel的其余属性一起插入即可? 我试图使用图像设置JPanel的背景,但是,我发现的每个示例似乎都建议使用自己的类扩展面板。 我一直在寻找一种方法来简单地添加图像,而无需创建一个全新的类并在同一个方法中(尝试保持组织和简单)。 以下是设置JPanel的方法示例: public static JPanel drawGamePanel(){ //Create game panel and attributes JPanel gamePanel = new JPanel(); Image background = Toolkit.getDefaultToolkit().createImage(“Background.png”); gamePanel.drawImage(background, 0, 0, null); //Set Return return gamePanel; }

如何正确使用自定义渲染器绘制JTable中的特定单元格?

我的GUI中有一个JTable组件,它显示算法的psuedocode 。 我想通过更改特定单元格的背景然后更改下面的单元格等来强调当前的执行行。 现在我的代码改变了JTable中所有单元格的背景,如下图所示: 我用来存档这个当前状态的代码如下: class CustomRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel d = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if((row == 0) && (column == 0)) d.setBackground(new java.awt.Color(255, 72, 72)); return d; } } 然后我调用jTable2.setDefaultRenderer(String.class, new CustomRenderer()); 在我的构造函数中。 […]

无法在Java 9中为自动生成的模块名称派生模块描述符?

我的项目依赖于Netty Epoll传输。 这是依赖: io.netty netty-transport-native-epoll ${netty.version} ${epoll.os} 此依赖项的自动生成的模块名称为: netty.transport.native.epoll 由于native 9中保留了native关键字,因此无法将此模块作为依赖项添加到我的项目中: module core { requires netty.transport.native.epoll; } 由于: module not found: netty.transport. 此外,jar工具–describe-module报告以下内容: 无法导出模块描述符:netty-transport-native-epoll-4.1.17.Final-SNAPSHOT-linux-x86_64.jar netty.transport.native.epoll:无效的模块名称:’native’不是Java标识符 有没有解决方法? (当然,除了“发布正确的网络工件”)。 编辑 : 作为维护者的快速修复 – 您可以添加下一行来构建: netty.transport.epoll

检测可以旋转的两个精灵的碰撞

我在2D Java游戏中遇到碰撞检测问题。 通常,我要做的是为可能与其他对象冲突的对象创建一个getBounds()方法。 此方法将返回一个new Rectangle(x,y,width,height) ,其中x和y是精灵左上角的坐标, width和height是精灵的宽度和高度。 但是在我正在进行的游戏中,有一个由用户控制的“坦克”。 只要玩家握住左或右箭头按钮之一,该坦克的精灵就会旋转 。 换句话说,它可以旋转到任何角度。 坦克的精灵是一个矩形。 所以我不能简单地做我在这种情况下经常做的事情。 如何检测这种精灵的碰撞? 谢谢

在Java中获取地理位置的最佳方式

在Java中获取地理位置的最佳方法是什么(尽可能自由)? 更新:不是来自GPS设备。 基本上Firefox 3.5 / HTML 5是如何做到的

如何使用JMF捕获video,但不安装JMF

我正在研究的video会议项目使用JMF来捕获video和音频,并将其传输到另一个端点。 问题是我的团队不希望产品的用户必须安装JMF。 我认为分享我们对这个问题的解决方案可能是值得的。 有用。 它运作良好。 我的问题是:有没有人有更好的方法呢? 环境:Windows,XP及以上版本 下载适用于Windows的JMF 将其安装在您的机器上 在jmf安装后,在system32文件夹中找到以下dll : jmacm.dll jmam.dll jmcvid.dll jmdaud.dll jmdaudc.dll jmddraw.dll jmfjawt.dll jmg723.dll jmgdi.dll jmgsm.dll jmh261.dll jmh263enc.dll jmjpeg.dll jmmci.dll jmmpa.dll jmmpegv.dll jmutil.dll jmvcm.dll jmvfw.dll jmvh263.dll jsound.dll 将dll复制到临时文件夹中 找到jmf.properties文件(在您的计算机上搜索它) 下载JMF源代码 在源代码中,找到以下文件: JMFinit.java JMRPropertiesGen.java Registry.java RegistryGen.java 创建一个包; 我称之为JMFNoInstall 添加步骤6中列出的文件 将一个名为Main的类添加到此包中: package JMFNoInstall; // add your imports and whatnot here public class […]

如何在JavaFX 2.2中绘制清晰,不透明的细线?

在JavaFX 2.2中绘制清晰,不透明的细线的最佳方法是什么? 文档说,如果strokeWidth为0.0d它将是一条发际线,但它根本不可见。 值> 0.0d and <1.0d显示非常精细的行,但也不显示不透明的行为。 当一条线切割另一条线时,相交点比线的其余部分更亮(我希望这种行为来自具有一定透明度的线)。 最后, 1.0d绘制一条具有几个像素宽度的白线。 那是我的测试代码: LineBuilder.create().startX(i*gridSize).startY(0).endX(i*gridSize).endY(height).smooth(false).stroke(Color.WHITE).strokeWidth(0.5d).fill(Color.WHITE).build();

如何将List从java传递给Oracle程序?

我想从Java发送一个List到Oracle程序。 例如,有一所学校,学校有一份学生名单。 此外,学生还有一个讲座列表。 我创建了一个讲座列表,一个列有讲座列表的学生列表,一个学校列出了学生列表。 讲座。 ArrayList lecture1 = new ArrayList(); lecture1.add(“Mat”); lecture1.add(“physics”); ArrayList lecture2 = new ArrayList(); lecture2.add(“English”); lecture2.add(“Spanish”); ArrayList lecture3 = new ArrayList(); lecture3.add(“Germany”); lecture3.add(“French”); 讲座清单。 ArrayList<ArrayList> lectureList1 = new ArrayList<ArrayList>(); lectureList1.add(lecture1); lectureList1.add(lecture3); ArrayList<ArrayList> lectureList2 = new ArrayList<ArrayList>(); lectureList2.add(lecture2); lectureList2.add(lecture3); 和讲座的学生名单。 ArrayList<ArrayList> StudentList = new ArrayList<ArrayList>(); StudentList.addAll(lectureList2); StudentList.addAll(lectureList2); ArrayList<ArrayList> StudentList2 = new ArrayList<ArrayList>(); StudentList2.addAll(lectureList1); […]

按下JFrame中的按钮后打开JPanel

我知道这个问题已被提出,但我找不到解决办法。 我创建了一个用于登录的JFrame ,我希望在按下“Cont Nou”按钮打开一个带有jpanel的新窗口的新窗口,但是不知道如何使初始帧消失并显示带有jpanel的帧。你有什么主意吗? 谢谢! 这就是我现在所做的: 这是带登录的JFrame : public class LogIn extends JFrame implements ActionListener{ private JLabel labelEmail; private JLabel labelParola; private JTextField textFieldEmail; private JPasswordField textFieldParola; private JButton buttonLogin; private JButton buttonContNou; public LogIn (){ super(); this.setSize(400,200); this.setTitle(“Login”); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(null); this.setResizable(false); this.setupComponents(); } private void setupComponents(){ labelEmail = new JLabel(“Email: “); labelParola = new […]