小编Eng*_*uad的帖子

删除ArrayList对象问题

在处理赋值时,我遇到了从ArrayList中删除对象的问题如果我使用"normal"for循环,它的工作原理如下

public void returnBook(String isbn){        
    for (int i = 0; i < booksBorrowed.size(); i++){            
        if (booksBorrowed.get(i).getISBN() == isbn){
            booksBorrowed.get(i).returnBook();
            booksBorrowed.remove(i);                
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用增强的for循环来简化代码时,这不起作用并显示java.util.ConcurrentModificationException错误:

public void returnBook(String isbn){        
        for (Book book: booksBorrowed){            
            if (book.getISBN() == isbn){
                book.returnBook();
                booksBorrowed.remove(book);                
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

希望你们能帮我一点......

java

5
推荐指数
1
解决办法
2837
查看次数

获取Java中两个URI的相对路径

我有这两个URI:

http://www.google.de/blank.gif

http://www.google.de/sub/

我想从相对路径http://www.google.de/sub/http://www.google.de/blank.gif so的结果是../blank.gif

URI.relativize() 在这里不起作用:/

谢谢!

java uri

5
推荐指数
1
解决办法
3864
查看次数

如何查看arraylist java中的所有项目?

在我的Android应用程序中,我希望能够将一个字符串值添加到我在主要的android活动中声明的静态arraylist.逻辑是这样的:

1)单击按钮并启动活动时.在oncreate方法上,我想将当前活动的类的名称保存到字符串值.例如:

String className = "com.lunchlist.demo";
Run Code Online (Sandbox Code Playgroud)

分配此值后,我想立即将此字符串值添加到我在主要的android活动中声明的静态ArrayList(意味着首先启动的android活动)添加值之后

我做了这样的事情:

static String List<String> members = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这是在我的主要活动中宣布的.现在当我单击一个按钮来启动另一个活动时,我使用它在我的oncreate方法中将当前活动的字符串classname添加到我的arraylist:

  String className = "com.lunchlist.demo" 
  members.add(className);
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,这会将字符串值添加到我的arraylist并保存以供以后使用吗?例如,如果我单击三个不同的按钮,这将向arraylist添加三个不同的className值.这会存储一个字符串值,该值将为我的成员arraylist保存三个不同的字符串值吗?如何检查我的arraylist中的每个项目,以查看在新活动开始时是否添加了值?

我问这个是因为我需要检索它并使用共享首选项存储这些值,然后检索它们并使用字符串值启动一个intent,这是启动活动的类.我让活动以类名的字符串值开头,我只是在存储它们时遇到了麻烦.

java android list arraylist

5
推荐指数
2
解决办法
5万
查看次数

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
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个类,我实例包含我doTheCleaning()方法的类和有我的ActionListener与我的JButton这样写我的actionPerformed()方法写的:

public void actionPerformed(ActionEvent e){
   //some code
   //newClass.doTheCleaning();
}
Run Code Online (Sandbox Code Playgroud)

我知道如何像addActionListener()和东西那样做其余的事情,所以不需要对此提出质疑.我担心的是,调用doTheCleaning()方法时执行的GUI中的所有更改仅在单击按钮后才适用.发生这种情况时,我的标签和textarea中发生的更改之间的连续性未显示.如果我直接在我的测试器类中调用它,但在actionperformed方法中调用它只显示我的GUI的最终状态,代码工作正常.我需要先显示哪个元素已更改,然后是下一个元素,依此类推.

当我需要在单击JButton时才发生这些更改时,我怎么能实现它?

**我在java中用GUI做的不太好.我希望你们在没有我提供代码的情况下理解我的观点.但如果有必要,我可以.谢谢.

java user-interface swing swingworker jbutton

5
推荐指数
1
解决办法
4388
查看次数

安全地打开和关闭模态JDialog(使用SwingWorker)

我需要一种方法从数据库中获取一些数据,并阻止用户修改当前的现有数据.

我创建了一个SwingWorker来进行数据库更新,并创建了一个模态JDialog来向用户显示正在发生的事情(使用JProgressBar).模态对话框的defaultCloseOperation设置为DO_NOTHING,所以它只能通过正确的调用关闭 - 我使用setVisible(false).

MySwingWorkerTask myTask = new MySwingWorkerTask();
myTask.execute();
myModalDialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

SwingWorker在doInBackground()中执行一些操作,最后调用:

myModalDialog.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

我唯一担心的问题是:在工作人员产生之后,SwingWorker是否可能在行setVisible(false)之前执行setVisible(true)

如果是这样,setVisible(true)可以永远阻止(用户无法关闭模态窗口).

我必须实现以下内容:

while (!myModalDialog.isVisible()) {
    Thread.sleep(150);
}
myModalDialog.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

确保它真的会被关闭?

java swing multithreading jdialog swingworker

5
推荐指数
1
解决办法
4209
查看次数

如何在java中创建屏幕键盘?

我正在开展一个学校项目,我们必须创建一个虚拟智能手机,在计算机上运行.

我的问题是我需要在屏幕上创建一个键盘(就像在智能手机上一样),然后您可以通过单击鼠标来使用它.我可以创造每一个JButton,但这需要很长时间.所以我跳了起来,有人知道某种算法可以创建所有按钮并将它们正确地放在屏幕上.

先感谢您 :)

java eclipse swing jpanel jframe

5
推荐指数
2
解决办法
1万
查看次数

Windows表单C#按代码更改用户控件

我有一个窗体,我不想让任何其他窗体形式只是一个窗体和不同的用户控制如何在用户控件之间进行更改,例如隐藏一个并以编程方式显示其他用户控件?


private void Btt_info_Click(object sender, EventArgs e)
{
    Frm_Main frm_main = new Frm_Main();
    frm_main.Controls["panel1"].Controls.Clear();
    UC_Info uc_info = new UC_Info();
    frm_main.Controls["panel1"].Controls.Add(uc_info);
}
Run Code Online (Sandbox Code Playgroud)

我添加了这个,但它不起作用

c# user-controls winforms

5
推荐指数
1
解决办法
2万
查看次数

没有名称的静态方法

在Android示例类中,这个方法是:

static {        
    addItem(...);
}
Run Code Online (Sandbox Code Playgroud)

当我引用该类时,确实添加了这些项.我从未见过像这样的方法,a.怎么称呼和b.我想只要引用类(或第一次引用类),就会调用此方法?

java static android class

5
推荐指数
2
解决办法
117
查看次数

使用带有阿拉伯数字的阿拉伯字母

听起来可能很奇怪,但是事实是Android处理语言确实很糟糕。以阿拉伯语为例:

东部的阿拉伯人使用阿拉伯字母(???????)和波斯数字(??????????)。

西部的阿拉伯人使用阿拉伯字母(???????)和阿拉伯数字(0123456789)。

Android只有一种阿拉伯语,这是第一种。

我正在寻找一种在我的应用程序中应用第二种方法(使用阿拉伯字母,但也使用阿拉伯数字)

有什么办法吗?

java multilingual android locale arabic

5
推荐指数
1
解决办法
756
查看次数

通过示例在 Windows 10 机器上安装 Java 可执行文件

我想一些具有在 Windows 桌面上交付 Java 应用程序经验的 Java 专家将能够胜过这一点。我一直是一名 Mac/Linux Java 开发人员,所以这对我来说是一个未知的领域:-/。

我必须编写一个 Java 8 Swing 应用程序并将其安装在 Windows 10(64 位)机器上。我Gameplan的是打包的应用程序作为一个可执行的JAR文件和包裹Launch4J,所以它看起来像一个地道的Windows EXE(.exe文件)。然而,它比分布更复杂一点:

  • 将有上面提到的 JAR/EXE,让我们调用它myapp.exe(从 构建myapp.jar
  • 该应用程序会将日志输出到(本地?)目录, myapp.log
  • 该应用程序将在运行时加载一个配置文件, myapp.properties
  • 发行版还应包含用户指南, MyApp User Guide.html

让我们假设机器上已经安装了 Java 8 JRE/JDK,所以我们不需要担心安装 Java 本身。

安装过程必须简单,包括:

  1. 从机器上完全删除旧版本(及其所有其他工件,例如日志文件、配置/属性文件、用户指南等)
  2. 在 Windows 10 默认位置安装新版本,或允许用户指定不同的位置

此外,如果可能的话,我希望安装过程包括:

  1. 要求检查诸如最小内存和磁盘空间、操作系统版本信息/兼容性(即确保其安装在 Windows 10 上等)
  2. 提供易于使用的向导,例如用户可以单击的 MSI
  3. 可选择安装用户桌面的快捷方式

鉴于所有这些,我想知道在现代 Windows 10/Java/Launch4J 环境中我的选择是什么。是否有工具可以帮助我快速编写 MSI 脚本,或者我是否必须用 C#/.NET 编写自己的脚本并将其作为单独的二进制文件/项目?如果 MSI 不是一个选项,那么存在哪些选项可能会击中我上面的所有项目?

我意识到我可以将整个内容作为 ZIP 分发,并且安装过程如下所示:

  1. 将 …

java windows-installer java-8

5
推荐指数
1
解决办法
2165
查看次数