草庐IT

java - 为什么 Java DefaultTableModel 使用 Vector?

我知道我们必须对所有表模型更新操作使用AWT线程。在单AWT线程下,任何表模型都是线程安全的。为什么DefaultTableModel选择线程安全的Vector作为其数据结构,它比ArrayList等其他数据结构慢? 最佳答案 Swing最早出现在Java1.2之前,所以在ArrayList可用之前。不幸的是,DefaultTableModel的API暴露了它使用Vector的事实,因此现在更改它会向后不兼容。这正是仔细考虑封装的原因-它可以让您稍后更改内部结构。(诚​​然,获得正确的序列化会很有趣,但这是另一天的故事......)

java - JTable 单元格渲染器

我正在遵循我发现的一些代码,(是的,我明白它是如何工作的)来自这里:CodeLink如果单元格值设置为“黄色”,我要做的是设置单元格前景色这是我的代码:publicclassBoardextendsJPanel{privatestaticfinallongserialVersionUID=1L;intboardHeight=20;intboardWidth=10;JTabletable;publicBoard(){table=newJTable(this.boardHeight,this.boardWidth);table.setDefaultRenderer(String.class

java - JTextArea 显示 Caret 而 setEditable 为 false

如何在禁用setEditable的情况下将Caret放在JTextArea中?当我需要插入符可见时的示例代码:publicvoidrun(){JFrameframe=newJFrame();JTextAreatext=newJTextArea();text.setEditable(false);Stringline="addedline";text.append(line);text.setCaretPosition(text.getCaretPosition()+line.length());frame.getContentPane().add(text);frame.setSize

java - 父类(super class)的隐藏方法

我读过OverridingandHidingMethods教程。从中,我收集了以下内容:Ifasubclassdefinesaclassmethodwiththesamesignatureasaclassmethodinthesuperclass,themethodinthesubclasshidestheoneinthesuperclass.因此,我做了以下事情:importjavax.swing.JTextArea;publicfinalclassJWrappedLabelextendsJTextArea{privatestaticfinallongserialVersionUID

java - 设置 JFileChooser 打开当前目录

我创建了一个JFileChooser来打开一个文件,但是当我选择一个文件并打开它时,第二次我想选择一个文件时,JFileChooser不在当前目录中。如何设置JFileChooser打开当前目录?JFileChooserfileChooser=newJFileChooser();fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);intresult=fileChooser.showOpenDialo

java - 在 Java/Scala 中显示图像的简单方法是什么?

我想尝试一下我正在编写的一些图像处理代码,所以我想使用Scala控制台或类似BlueJ的JavaCodePad的东西来创建一个java.awt.Image,然后将它弹出来查看在.理想情况下,它只是一个面板或不带框架的东西,我可以单击它使其消失。有没有办法制作如此轻便的东西,或者我真的需要某种框架和更多脚手架吗? 最佳答案 JOptionPane.showMessageDialog(parent,newJLabel(newImageIcon(theImage)));当然,如果您有图像的URL(或者可以从File路径形成一个),它也可以

java - 创建 JFrame 的最佳方式

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。创建和处理JFrame的最佳方法是什么?创建一个类并在其中创建一个对象JFrame从JFrame继承,如classMyClassextendsJFrame

java - 调试 JNLP 启动的应用程序

我创建了一个Java桌面应用程序(使用Swing),现在正尝试通过使用JNLP从网上启动它来使其工作。当我从终端启动应用程序时它工作正常,但是一旦我从JNLP启动它,它就不会关闭。我每次都必须手动终止进程。我读到如果我的JFrame使用DISPOSE_ON_CLOSE作为默认关闭操作可能会出现问题,但事实并非如此。它使用DO_NOTHING_ON_CLOSE(隐含地)。此外,我在释放所有对象后显式调用System.exit(0):f=newJFrame("Pacman");f.addWindowListener(newWindowAdapter(){@Overridepublicvoi

java - paintComponent 在我的绘图之上绘制其他组件

我正在尝试构建一个简单的绘画工具。mouseDrag事件创建了一个新的椭圆并使我的JPanel变为repaint()。到目前为止一切正常。但是,如果我在第一次触发mouseDrag事件之前按下任何按钮(或任何其他UI组件),该按钮将绘制在面板的左上角。我已将代码隔离到此测试应用程序中:importjava.awt.BasicStroke;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.event.Mous

java - 最好的布局管理器是什么?

我想制作一个类似于上面的图形用户界面。现在我有一个面板,其中包含姓名标签、姓名文本字段、出生日期标签和生日文本字段。我的问题是在面板上使用什么是最好的布局管理器,以便“名称组件”行(标签+文本字段)和“出生日期组件”行(标签+文本字段)在垂直方向上均匀分布面板。我考虑过使用流式布局,但那样会导致两行组件之间没有间隙。我想过用网格布局,但我不知道两行组件之间的间隙大小。一种更复杂的方法...我考虑将名称标签和文本字段放在一个面板中,将出生日期标签和文本字段放在另一个面板中,然后制作基本面板边框布局并将名称设置为北方,生日为向南...但是我仍然必须确保名称组件在名称面板中垂直居中,并且生日