找到 2637 篇文章 关于 Java
2K+ 次查看
是的,我们可以在 Java 中重写 Thread 类的 start() 方法。我们必须调用 super.start() 方法来创建一个新线程,并需要在该新创建的线程中调用 run() 方法。如果我们直接从 start() 方法内部调用 run() 方法,它可以在实际线程中作为普通方法执行,而不是在新线程中执行。示例 public class ThreadTest { public static void main(String[] args) { MyThread t = new MyThread(); t.start(); } } class MyThread extends Thread { ... 阅读更多
473 次查看
不,我们不能在不获取锁的情况下调用 wait() 方法。在 Java 中,一旦获取了锁,我们就需要在该对象上调用 wait() 方法(有超时或无超时)。如果我们尝试在不获取锁的情况下调用 wait() 方法,它可能会抛出 java.lang.IllegalMonitorStateException。示例 public class ThreadStateTest extends Thread { public void run() { try { wait(1000); } catch(InterruptedException ie) { ie.printStackTrace(); ... 阅读更多
348 次查看
JPasswordField 是 JTextField 的子类,在 JPasswordField 中输入的每个字符都可以用回显字符替换。这允许对密码进行机密输入。JPasswordField 的重要方法有 getPassword()、getText()、getAccessibleContext() 等。默认情况下,我们可以在 JPasswordField 中输入任意数量的数字。如果我们想通过实现 DocumentFilter 类来限制用户输入的数字,并且需要重写 replace() 方法。语法 public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException 示例 import java.awt.*; import java.awt.*; import javax.swing.*; import javax.swing.text.*; public class JPasswordFieldDigitLimitTest extends JFrame { private JPasswordField passwordField; private JPanel ... 阅读更多
2K+ 次查看
不,构造函数不能在 Java 中同步。JVM 确保在给定时间点只有一个线程可以调用构造函数调用。因此,不需要将构造函数声明为同步的,并且在 Java 中它是违法的。但是,我们可以在构造函数中使用同步块。如果我们尝试在构造函数前放置 synchronized 关键字,编译器会提示“错误:此处不允许使用修饰符 synchronized”。示例 public class SynchronizedConstructorTest { // 声明同步构造函数 public synchronized SynchronizedConstructorTest() { System.out.println("Synchronized Constructor"); } public ... 阅读更多
1K+ 次查看
JComboBox 是 JComponent 类的子类,它是文本字段和下拉列表的组合,用户可以从中选择一个值。当用户在组合框上操作时,JComboBox 可以生成 ActionListener、ChangeListener 和 ItemListener 接口。我们可以通过使用组合框的自定义 (AutoCompleteComboBox) 来实现自动完成 JComboBox,方法是扩展 JComboBox 类。示例 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.plaf.basic.*; public class AutoCompleteComboBoxTest extends JFrame { private JComboBox comboBox; public AutoCompleteComboBoxTest() { setTitle("AutoCompleteComboBox"); ... 阅读更多
213 次查看
直接调用 Thread 对象的 run() 方法不会启动一个单独的线程,它可以在当前线程中执行。要在单独的线程中执行 Runnable.run,请执行以下操作之一。使用 Runnable 对象构造一个线程,并在 Thread 上调用 start() 方法。定义 Thread 对象的子类并覆盖其 run() 方法的定义。然后构造该子类的实例,并直接在该实例上调用 start() 方法。示例 public class ThreadRunMethodTest { public static void main(String args[]) { MyThread runnable = new MyThread(); ... 阅读更多
364 次查看
JDialog 是 Dialog 类的子类,它在窗口的右上角没有最小化和最大化按钮。有两种类型的对话框,即模态和非模态。对话框的默认布局为 BorderLayout。在下面的程序中,我们可以通过自定义 AlphaContainer 类并重写 paintComponent() 方法来实现透明的 JDialog。示例 import java.awt.*; import javax.swing.*; public class TransparentDialog { public static void main (String[] args) { JDialog dialog = new JDialog(); dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); dialog.getRootPane().setOpaque(false); dialog.setUndecorated(true); dialog.setBackground(new Color (0, 0, ... 阅读更多
456 次查看
String 类可用于表示字符字符串,Java 程序中的所有字符串文字都作为 String 类的实例实现。字符串是常量,一旦创建,其值就不能更改(不可变)。在下面的程序中,我们可以打印给定字符串中出现次数最多的字符。示例 public class MaxOccuredCharacterTest { public static void main(String[] args) { String str1 = maxOccuredChar("tutorialspoint"); System.out.println(str1); String str2 = maxOccuredChar("AABBAABBCCAABBAA"); System.out.println(str2); ... 阅读更多