了解CaseInsensitiveComparator中的逻辑

任何人都可以解释String.java的以下代码,特别是为什么有三个if语句(我标记为//1 , //2和//3 )? private static class CaseInsensitiveComparator implements Comparator, java.io.Serializable { // use serialVersionUID from JDK 1.2.2 for interoperability private static final long serialVersionUID = 8575799808933029326L; public int compare(String s1, String s2) { int n1=s1.length(), n2=s2.length(); for (int i1=0, i2=0; i1<n1 && i2<n2; i1++, i2++) { char c1 = s1.charAt(i1); char c2 = s2.charAt(i2); […]

为什么原始数据类型在Java中不能为“null”?

声明任何基本类型数据(如int或double它们会初始化为0或0.0 。 为什么我们不能将它们设置为null ?

如何在Tomcat中设置请求编码?

我的Java webapp中存在问题。 这是index.jsp中的代码: JSP Page Hello World! Res: 当我发送请求时,我的浏览器会发送此标头: GET /kjd/index.jsp?q=%C3%A9 HTTP/1.1\r\n … Accept-Charset: UTF-8,*\r\n Tomcat服务器将此返回给我: Content-Type: text/html;charset=UTF-8\r\n 但是如果我在表格中发送“é”(UTF-8中的%C3%A9),则会显示“é”。 我的理解是浏览器发送一个用UTF-8(%C3%A9)编码的“é”。 但服务器将其解释为ISO-8859-1。 所以%C3被解码为Ã而%A9被解码为©,然后发回以UTF-8编码的响应。 在代码中,请求应使用UTF-8解码: request.setCharacterEncoding(“UTF-8”); 但是,如果我发送这个url: http://localhost:8080/kjd/index.jsp?q=%E9 “%E9”用ISO-8859-1表示,显示“é”。 为什么这不起作用? 为什么请求使用ISO-8859-1进行解码? 我在Tomcat 6和7以及Windows和Ubuntu上尝试过它。

在OSX上摇摆:如何捕获命令-Q?

在确信(“受过教育”)Mac上的Swing应用看起来本机之后 ,我试图让我的外观尽可能本地化。 一切看起来都很棒,但是当我点击命令 + Q或从菜单中执行时,我的windowStateChanged(WindowEvent e)没有在我的主JFrame上触发(如果我以任何其他方式退出,它会触发)。 我如何回应真正的Apple退出?

JavaFX控制器类无法正常工作

我真的很难理解JavaFX控制器,我的目标是写一个TextArea来充当日志。 我的代码如下,但我希望能够在需要时从另一个类中更改值ETC。 我试图创建一个扩展Initializable的控制器类,但我不能让它工作。 有人可以引导我朝着正确的方向前进吗? 我想将底部的@FXML代码移动到另一个类并更新Scene。 package application; import javafx.event.ActionEvent; import javafx.scene.control.Label; import javafx.scene.control.TextArea; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; public class Main extends Application { @Override public void start(Stage primaryStage) { try { Parent root = FXMLLoader.load(getClass().getResource(“Root.fxml”)); Scene scene = new Scene(root,504,325); scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception […]

如何访问JAR文件中的资源?

我有一个带有工具栏的Java项目,工具栏上有图标。 这些图标存储在名为resources /的文件夹中,因此例如路径可能是“resources / icon1.png”。 这个文件夹位于我的src目录中,所以编译时将文件夹复制到bin / 我正在使用以下代码来访问资源。 protected AbstractButton makeToolbarButton(String imageName, String actionCommand, String toolTipText, String altText, boolean toggleButton) { String imgLocation = imageName; InputStream imageStream = getClass().getResourceAsStream(imgLocation); AbstractButton button; if (toggleButton) button = new JToggleButton(); else button = new JButton(); button.setActionCommand(actionCommand); button.setToolTipText(toolTipText); button.addActionListener(listenerClass); if (imageStream != null) { // image found try { […]

使用Java在Windows上隐藏文件/文件夹

我需要在Windows和Linux上隐藏文件和文件夹。 我知道附加一个’。’ 到文件或文件夹的前面会使它隐藏在Linux上。 如何在Windows上隐藏文件或文件夹?

为什么等于运算符的Integer值直到128数?

为什么Integer “=”运算符不适用于128和Integer值之后? 有人可以解释这种情况吗? 这是我的Java环境:java版“1.6.0_37” Java(TM)SE运行时环境(版本1.6.0_37-b06) Java HotSpot(TM)64位服务器VM(内置20.12-b01,混合模式) 示例代码: Integer a; Integer b; a = 129; b = 129; for (int i = 0; i < 200; i++) { a = i; b = i; if (a != b) { System.out.println("Value:"+ i + " – Different values"); } else { System.out.println("Value"+ i + " Same values"); […]

JButton ActionListener – 仅在单击JButton之后才更新GUI

我的JButton ActionListener有问题。 我有一个在另一个类中定义的doTheCleaning()方法,在调用时会对我的GUI进行一系列更改。 public void doTheCleaning(){ //change image icon //had thread.sleep here //insert to text area //had thread.sleep here //etc } 然后在另一个类中,我实例化了包含我的doTheCleaning()方法的类,并为我的jbutton编写了带有actionperformed()方法的ActionListener,如下所示: public void actionPerformed(ActionEvent e){ //some code //newClass.doTheCleaning(); } 我知道如何像addActionListener()和其他东西那样做其余的事情,所以不需要对此提出质疑。 我担心的是,调用doTheCleaning()方法时执行的GUI中的所有更改仅在单击按钮后才会应用。 发生这种情况时,我的标签和textarea中发生的更改之间的连续性未显示。 如果我直接在我的测试器类中调用它,但在actionperformed方法中调用它只显示我的GUI的最终状态,代码工作正常。 我需要先显示哪个元素已更改,然后是下一个元素,依此类推。 当我需要在单击JButton时才需要进行这些更改时,我怎么能实现它? **我在java中用GUI做的不太好。 如果没有我给我的代码,你们明白了我的观点。 但如果有必要,我可以。 谢谢。

从Java创建MySQL数据库

是否可以从Java创建MySQL数据库? 我只看到了这样的连接URL示例,其中在URL中指定了数据库名称: String url=”jdbc:mysql://localhost:3306/test”; Connection con = DriverManager.getConnection( url, “cb0”, “xxx” ); 当我只有登录名和密码时,如何创建MySQL数据库?