我有一个应用程序在几个地方使用禁用的JTextFields,这些地方是透明的-允许显示背景而不是文本字段的正常背景。当运行新的NimbusLAF时,这些字段是不透明的(尽管设置了setOpaque(false)),并且我的UI被破坏了。就好像LAF忽略了不透明属性。设置背景颜色在几个地方都很难明确设置,而且由于背景图像的原因也不是最佳实际上是行不通的——它仍然在顶部绘制它的LAF默认背景,留下类似边框的外观(下面的启动画面明确设置了与图像匹配的背景)。关于如何让Nimbus不为JTextField绘制背景有什么想法吗?注意:我需要JTextField而不是JLabel,因为我需要线程安
我有一个JTextField,我希望为其建议结果以匹配用户的输入。我在JPopupMenu中包含的JList中显示这些建议。但是,当通过show(Componentinvoker,intx,inty)以编程方式打开弹出菜单时,焦点从JTextField获取。奇怪的是,如果我改为调用setVisible(true),焦点不会被窃取;但是JPopupMenu没有附加到任何面板,并且在框打开的情况下最小化应用程序时,它会停留在窗口上。我还尝试使用requestFocus()将焦点重置到JTextField,但随后我必须使用SwingUtilities.invokeLater恢复插入符号位置(
请考虑以下代码片段:importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.lang.reflect.InvocationTargetException;importjavax.swing.*;publicclassTestAppletextendsJApplet{@Overridepublicvoidinit(){try{SwingUtilities.invokeAndWait(newRunnable(){@Overridepub
我想将一些任意文本转换为形状(java.awt.Shape),然后描边/填充形状以绘制它。我该怎么做? 最佳答案 嗯,我不知道这个问题的答案,但在使用Eclipse内容辅助进行一些调整和探索之后,我发现这似乎是您需要的:编辑:我更改了代码以更改字符串的显示方式,这就是您问您所问内容的原因:)试试吧。它将字符串呈现为红色和虚线轮廓importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Component;importjava.awt.Dimension;import
我在JScrollPane中有一个JTextArea组件,文本区域不可编辑。我想使用向上和向下箭头键启用文本区域的滚动(即按箭头键将文本区域滚动一行)。任何想法如何实现这一目标? 最佳答案 是的,键绑定(bind)是可行的方法,但您并不总是需要创建自己的操作。Swing组件带有您可以经常重复使用的默认操作。参见KeyBindings有关这些操作的完整列表。现在您知道了Action名称,您可以将它绑定(bind)到keyStroke:JScrollBarvertical=scrollPane.getVerticalScrollBar(
我谷歌了很多,没有找到解决方案。我觉得应该有java高手来帮帮我...这是我的初始化方法:privatevoidinitialize(){this.setSize(750,480);this.setContentPane(getJContentPane());this.setTitle("Registration");JPaneltopPane=newTopPane();this.getContentPane().add(topPane,BorderLayout.PAGE_START);cards=newJPanel(newCardLayout());cards.add(step0()
我有一个应用程序需要用户输入密码。我想做的是从控制台读取密码(如果操作系统支持一个,例如unix)或显示一个JOptionPane并要求用户输入他的密码(如果操作系统支持图形界面,例如windows)。有些人可能会争辩说,在上述两种情况下,控制台总是可用的,因此控制台输入就足够了。但问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一种情况。我的问题是如何确定应用程序运行的环境是支持控制台还是图形界面。我知道静态方法存在GraphicsEnvironment.isHeadless()但是从Java文档来看,我认为这种方法无
我有一个JLabel,我想为其添加边距。它看起来像这样:我读到有关设置具有一定厚度的空边框,但这会替换当前边框。我怎样才能添加这个margin? 最佳答案 "Ireadaboutsettinganemptyborderwithacertainthickness,butthiswouldreplacethecurrentborder.HowcanIaddthismargin?"参见CompoundBorderAcompositeBorderclassusedtocomposetwoBorderobjectsintoasinglebor
我应该如何检测JTable中的列移动操作是否已完成?我已将columnModeListener添加到我的列模型中,但问题是每次列移动(按某些像素)时都会调用columnMoved方法。我不想要这种行为。我只想检测列拖动何时完成。columnModel.addColumnModelListener(newTableColumnModelListener(){publicvoidcolumnAdded(TableColumnModelEvente){}publicvoidcolumnRemoved(TableColumnModelEvente){}publicvoidcolumnMoved
我正在尝试以将新数据记录添加到末尾的方式使用JTable。奇怪的是滚动条没有走到表格的末尾;相反,它总是显示倒数第二个。有什么方法可以让滚动条始终移动到表格的末尾?这是我的部分代码:table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1,0,true)); 最佳答案 我刚遇到这个问题——那行代码实际上没有任何问题;问题在于您何时执行它。如果您像我一样尝试在操作TableModel(甚至通过invokeLater)或使用TableModelListener后立