iText5中的标题重叠

我使用PdfPTables为我的PDF文档创建了页眉和页脚。 我已经在我的PdfPageEventHelper的onStartPage和onEndPage事件中分别指定了页眉和页脚。 我面临的问题是在我的文档中添加一个段落。 当我创建一个新段落时,如下所示: Paragraph content = new Paragraph(“This is a test text”); try{ pdfDocument.add(content); } catch (DocumentException e){ e.printStackTrace(); } 内容与标题重叠。 我需要的是在页眉和页脚之间设置pargraph。 有人可以告诉我,为了将pargraph放在页眉和页脚之间而不是在它们之间,我需要做些什么。 谢谢

如何限制Java中JPasswordField的位数?

我有我的Java代码在Eclipse中工作,但我需要添加一些function。 首先,如何限制用户可以输入的位数? 实际上我有一个JPasswordField让一个人输入一个pin代码,我希望这个JPasswordField最多限制为4位数。 那么如何在输入4位数字后立即停止输入? 然后,我如何玩JPassword框的大小? 有没有办法像JTextField一样修改它? 因为我的行“p1.setPreferredSize(new Dimension(100,25));” 似乎并没有真正让我修改盒子的大小。 如您所见,JPassworldField框具有默认大小,我无法弄清楚如何轻松修改。 这是我的代码: package codePin; import java.io.*; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame { private static final long serialVersionUID = 1L; private JPanel container = new JPanel(); private JPasswordField p1 = new JPasswordField(4); private JLabel label = new […]

JavaFx在表列上使用String with Double

我有一个名为“Product”的类,具有双重属性“price”。 我在表格视图中的表格列上显示它,但我想显示格式化的价格 – “US $ 20.00”而不仅仅是“20.00”。 这是填充表视图的代码: priceProductColumn.setCellValueFactory(cellData -> cellData.getValue().priceProperty()); 我尝试了一切:将返回的值转换为字符串,使用priceProperty具有的方法toString等,但似乎不起作用。 我是否需要绑定类似的事件?

无法定义私有静态final变量,因为它会抛出exception

我有一个类: public class SomeClassImpl implements SomeClass { private static final SomeLib someLib = new SomeLib(); } 我不能这样做,因为SomeLib会抛出一个UnknownHostException。 我知道我可以将实例化移动到构造函数中,但是有没有办法让我按照上面的方式执行它? 这样我就可以将var标记为final。 我试图寻找如何在类级别抛出exception,但无法在其上找到任何内容。

制作一个单jar的java应用程序

如果我有一个由几种不同类型的文件(图片,声音等)和多个jar依赖项组成的java项目,那么将它们全部打包到一个可以双击的jar中的好方法是什么? 我知道jar子本身是相当愚蠢的,因为他们不会在自己内部寻找他们所依赖的文件(我只是在一丝沮丧之后才意识到这一点(轻描淡写))。 – 如果jar A依赖于jar B中包含的类,那么将jar B放入jar A中是行不通的。 Jar A必须与jar B在同一目录中。 …现在,我知道我可以从所有其他jar中提取所有文件并将所有文件放在同一目录中。 这样做有点工作,但我不想这样做,因为:1。它会很混乱2.它仍然无法解决需要将声音文件放在与最终jar相同的目录中的问题。 (无论出于何种原因,声音文件的行为与内部jar完全相同) 基本上,我只是想做到这一点,以便我的应用程序所依赖的文件不是令人讨厌的可见和炫耀。 所以,如果有一些解决方案,我可以将所有内容放在一个jar中并让它成为运行整个程序的唯一必要文件,那将是最佳的。 但是,我愿意接受创造性/创造性的方法来绕过这个问题,比如让父目录中的批处理脚本执行jar或其他东西。 (我说“或者什么”,因为那个确切的场景只适用于Windows操作系统….你知道我的意思!)

OS X中的Eclipse使用不同于CLI的Java版本

当我在控制台中输入java -version时,我得到java version “1.8.0_05” 。 软链接/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK指向/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents 。 在java首选项窗口中,唯一列出的Java版本是1.8。 JAVA_HOME设置为/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 。 但是,当我尝试运行Eclipse.app时,我收到错误: Version 1.6.0_65 of the JVM is not suitable for this product. Version: 1.7 or greater required. Version 1.6.0_65 of the JVM is not suitable for this product. Version: 1.7 or greater required. 我相信它正在尝试使用/System/Library/Java/JavaVirtualMachines并且在该目录中唯一的版本是1.6.0.jdk 。 如何让eclipse使用正确版本的Java?

Java:.nextLine()和.nextDouble()的区别

我正在阅读Java的API,因为我对.nextLine()和.nextDouble()之间的区别有疑问。 在API中,它为.nextLine()说明了这一点: “使此扫描器前进超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。位置设置为下一行的开头。” 足够简单…它会跳过你当前的行,然后返回你刚刚跳过的行。 但对于.nextDouble() ,它说: “将输入的下一个标记扫描为double。如果下一个标记无法转换为有效的double值,则此方法将抛出InputMismatchException。如果转换成功,则扫描程序将超过匹配的输入。” 那么这是否意味着.nextDouble()不会跳到一个新行,它只会读到双尾的结尾,然后在行的末尾停止? 这将有助于我理解我正在研究的一个程序。 谢谢你们的家伙们!

什么时候应该覆盖toString()?

我知道Javadocs说 : 返回对象的字符串表示forms。 通常,toString方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。 但是什么时候应该花时间覆盖我的类的toString方法? 它应该是我与覆盖equals和hashCode一起做的第一件事吗? 或者我应该等到实际需要它? 我知道Eclipse可以为你自动生成toString方法,所以一旦我知道了我的类的字段,我应该让Eclipse自动生成它们吗?

在C中更改变量的值时,是创建了一个新原语还是当前原语是变异的?

我知道’mutable’和’immutable’是应该用来描述对象改变面向对象语言(如Java和Objective C)中的值的能力的术语。但是,我想提出它,因为它与我有关关于原始数据的问题。 我知道当我更改包含不可变对象的变量的值时,我实际上正在创建一个新对象。 但是,我想知道C中的原语数据是否与不可变对象类似。 我的意思是,当我更改保存原始数据的变量的值时,会创建一个新数据并由变量引用。 或者现有的原语实际上是否突变/修改了存储的数据值? 编辑#1: 问题#1:我想澄清一些误解(无论是我还是其他人),因为当我说“当我改变一个包含不可变对象的变量的值时我没有说清楚”,我实际创建了一个新对象。“ 当我这样说时,我并不是要将变量赋给现有对象。 例如: // Example 1: I did not mean this ————————- String x = “Hello World”; String y = x; ————————- // Example 2: What I meant is this ————————- String x = “Hello World”; //This will print out “Hello World” System.out.println(x); x = “Goodbye World”; //This […]

使用某个左下角坐标进行JPopupMenu显示

假设我想以这样的方式在Java中创建一个按钮,这样当您单击它时,就会出现JPopupMenu 。 它出现的相关代码是menu.show(button, button.getWidth()/2, button.getHeight()/2); ,这使得JPopupMenu的左上角显示在按钮的中心,如下所示: 但是,我希望它能让左下角位于按钮的中央,就像iTunes一样(左下角有一个按钮,大小与+按钮相同)左边): 我试图通过获取JPopupMenu的高度并将其添加到弹出菜单显示的y坐标来实现这一点,但我发现JPopupMenu在可见之前的高度为0,而不是帮助我,因为我试图告诉计算机在哪里可以看到它。 此外,不可能在偏移中进行硬编码,因为弹出窗口中的项目数量不一定相同。 我怎样才能使我的JPopupMenu具有未知的高度,以便它的左下角坐标与给定的坐标相匹配?