Tag: swing

为什么不推荐使用JPasswordField中的getText()?

我之前从未想过,只是我使用了返回字符数组的方法getPassword ,并且我已经看到了不推荐使用 getText方法。 但是现在我想,为什么这种方法被弃用了 ? Java文档说明: 不推荐 。 从Java 2平台v1.2开始,由getPassword取代。 获取组件表示的部分文本。 如果length为0,则返回空字符串。 出于安全原因,不推荐使用此方法。 请改用getPassword方法。 但那些安全原因是什么? 关于这个的任何想法? 先谢谢你。

如何打印单个JPanel的内容?

我有一个带有两个带图片标签的JPanel 。 我需要打印JPanel这些内容。 请帮帮我。 我怎么才能打印这个JPanel的内容,因为我的JFrame上也有不同的组件,但我只需要打印这个 JPanel 。 谢谢。

是否可以在JCalendar JDateChooser字段上检测日期更改?

我想在JDateChooser字段中检测日期何时更改,以便我可以更新另一个字段。 这可能吗? 如果是这样,我应该在哪里开始? 我已经查看了文档,遗憾的是没有添加类似ActionListener或StateChangeListener的方法(我的第一个想法)。

在JTextArea或JTextPane中居中文本 – 水平文本对齐

有没有办法为JTextArea创建水平居中的文本,就像使用JTextField一样? setHorizontalAlignment(JTextField.CENTER); 有没有办法可以用多行文本区域完成同样的事情? 我用JTextArea找不到它的方法,那么还有其他选择吗? 的JTextPane? 如果是这样,怎么样?

防止在后台任务期间锁定Swing GUI

我有一个swing应用程序,它存储一个对象列表。 当用户点击按钮时 我想对列表中的每个对象执行两个操作,然后在完成后,将结果绘制在JPanel中。 我一直在尝试使用SwingWorker,Callable和Runnable进行处理,但无论我做什么,在处理列表时(可能需要几分钟,因为它是IO绑定的),GUI被锁定。 我有一种感觉,这可能是我调用线程或其他东西的方式,还是可能与图形函数有关? 这不是线程,因为它非常快。 我必须按顺序完成两个处理阶段,那么确保第二个阶段在第一个阶段等待的最佳方法是什么? 我已经使用了join(),然后 while(x.isAlive()) { Thread.sleep(1000); } 试图确保这一点,但我担心这也可能是我的问题的原因。 我一直在寻找一些指针,但由于我找不到任何东西,我确信我在这里做了些蠢事。

运行Eclipse导出的jar时“找不到主类”错误

我有一个java项目,从Eclipse中运行它时可以正常工作。 当我尝试将其导出到”JAR file”或”Runnable JAR file” ,会创建.jar文件,但是当我双击它以尝试运行该程序时,它会给我一个错误 “Could not find the main class: package.MainClassName. Program will exit.” 正如我所提到的,我尝试导出到两个JAR选项,我指定了main方法所在的正确类,当我查看.jar文件中的实际文件时,一切似乎都是有序的 – 清单看起来像: Manifest-Version: 1.0 Main-Class: package.MainClassName (blank line) 并且位于META-INF文件夹中。 我的包名有一个文件夹,其中包含所有.class文件,包括包含main方法的类。 我使用的一些图像和文本文件也出现在jar文件中。 实际的程序并不是太复杂 – 它是一个使用Swing的简单“蛇”游戏(加上代码在Eclipse内部运行时都有效)。 是什么原因造成了这个错误以及我如何解决它? 如果我应该提供任何其他信息,请告诉我。

如何在可执行的Jar中包含SQLite数据库?

我创建了一个使用SQLite作为本地数据库的Swing应用程序。 数据库文件位于项目的根目录中。 Project/DatabaseFile 应用程序在Eclipse上运行正常,但是当我运行打包的可执行文件Jar时,我收到以下错误: No such table : table1 这意味着无法访问数据库。 当我检查生成的JAR文件的内容时,数据库文件不再存在。 在代码中,我将数据库链接如下: jdbc:sqlite:DatabaseFile 我的问题是,如何将SQLite数据库包含在可执行的Jar中? 编辑 当我将DB文件放在源文件夹Project/src/DatabaseFile并将路径更改为jdbc:sqlite:src/DatabaseFile ,它在Eclipse上工作,但在将Jar文件作为java -jar Project.jar运行时再次工作。 它说: path to ‘src/DatabaseFile’: ‘C:\Users\name\src’ does not exist 我想我需要指定数据库的相对路径。 编辑 这是我连接数据库的方式: public Connection getConnection(){ try{ Class.forName(“org.sqlite.JDBC”).newInstance(); con = DriverManager.getConnection(“jdbc:sqlite:src/DatabaseFile”); } catch (Exception e) { Log.fatal(“Méthode: getConnection() | Class : SQLiteConnection | msg system : ” + […]

如何通过单击JButton添加JPanel?

我正在尝试创建一个小的GUI,它有2个JButton和2个JPanel,每个都有一些绘图动画。 默认情况下,它必须显示第一个JPanel,并通过单击第二个JButton我想看到我的第二个JPanel。 所以:我创建了JFrame,Panel1和Panel2,在那里我绘制了我的动画,创建了Button1和Button2并添加了ActionListeners。 我还有MainPanel,它有一个字段变量i。 通过更改此“i”我的构造函数将MainPanel添加到Panel1(默认)或Panel2(通过单击JButton2我更改i)。 比我把这个MainPanel添加到我的框架。 所以我的问题:在类MainPanel中我有refreshMe方法,我应该在那里写什么才能让我的GUI正常工作? 谢谢。 这是我的代码: import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GuiTest { public static void main(String[] args) { JFrame f = new JFrame(); MainPanel myPanel = new MainPanel(); f.add(myPanel); Button1 button1 = new Button1(); Button2 button2 = new Button2(); myPanel.add(button1); […]

为什么JCheckBox上的setSelected失效?

有人可以向我解释当我将JOptionPane放入ItemListener时,为什么我丢失了JCheckBox的选择(由setSelected()设置setSelected() ? 这是一个错误吗? 奇怪的是,如果使用invokeLater()延迟此过程, setSelected()将按预期正常工作。 来自SSCCE import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ComponentEventDemo extends JPanel implements ComponentListener, ItemListener { private static final long serialVersionUID = 1L; private JFrame frame; private JTextArea display; private String newline = “\n”; private JTextField field1; public ComponentEventDemo() { super(new BorderLayout()); display = new JTextArea(10, 25); display.setEditable(false); JPanel panel […]

添加可滚动的JTextArea(Java)

我正在尝试向JTextArea添加滚动条。 有人请告诉我下面的代码我做错了什么? JFrame frame = new JFrame (“Test”); JTextArea textArea = new JTextArea (“Test”); JScrollPane scrollV = new JScrollPane (textArea); JScrollPane scrollH = new JScrollPane (textArea); scrollV.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scrollH.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); frame.setVisible (true); 先谢谢你。 编辑:我修改了下面的Adel Boutros建议的代码。 //FRAME JFrame frame = new JFrame (“Test”); frame.setSize(500,500); frame.setResizable(false); // //TEXT AREA JTextArea textArea = new JTextArea(“TEST”); textArea.setSize(400,400); textArea.setLineWrap(true); textArea.setEditable(false); textArea.setVisible(true); JScrollPane […]