无法将当前canvas数据转换为java中的图像

我有一个简单的应用程序,允许用户在canvas控件中绘制。 现在,我想要的是将canvas转换为图像。 所以这是我的代码。 public void paint(Graphics g) { //super.paint(g); Graphics2D draw = (Graphics2D) g; if(this.is_beginning || this.to_save) { draw.setColor(Color.white); draw.fillRect(0, 0, this.getWidth(), this.getHeight()); this.is_beginning= false; } if(this.m_alzada) { draw.setColor(Color.red); draw.drawLine(uX, uY, x, y); } } 这是我保存图像的方法。 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { int w = canvas1.getWidth(); int h = canvas1.getHeight(); int type = BufferedImage.TYPE_INT_BGR; BufferedImage image […]

+ =和= +之间有什么区别?

+ =和= +之间有什么区别? 具体来说,在java中,但一般而言。

计算ISO 8601周数的好方法是什么?

假设我有一个日期,即年,月和日,作为整数。 什么是一个好的(正确的),简洁和可读的算法,用于计算给定日期所属的一周的ISO 8601 周数 ? 我遇到了一些真正可怕的代码,这些代码让我觉得必须有更好的方法。 我希望用Java做这个,但任何类型的面向对象语言的伪代码都很好。

Java Pattern Matcher:创建新的还是重置?

假设一个Regular Expression ,它通过Java Matcher对象与大量字符串匹配: String expression = …; // The Regular Expression Pattern pattern = Pattern.compile(expression); String[] ALL_INPUT = …; // The large number of strings to be matched Matcher matcher; // Declare but not initialize a Matcher for (String input:ALL_INPUT) { matcher = pattern.matcher(input); // Create a new Matcher if (matcher.matches()) // Or whatever […]

在同一JVM上设置多个信任库

我有一个在weblogic服务器上运行的Java应用程序。 该应用程序有两个不同的模块,使用SSL连接到外部Web服务 – 比如模块A和模块B. 模块A – 基于轴构建 – 使用信任库A Moudle B – 基于Spring-ws构建 – 使用信任库B. 模块A存在。 正在介绍模块B. 我需要能够根据调用的模块在JVM中动态设置信任库。 由于某些限制,我没有选项 – 创建自定义密钥管理器。 – 使用一个信任库 我尝试使用System.setProperty im Module B codebase来设置truststore。 但是,仅当模块B首先被调用时才有效。 例如 – 假设我重新启动JVM然后调用模块A – 它在JVM中设置它自己的信任库然后我调用模块B – 它失败 – 它没有在JVM中设置它自己的信任库,即使我已经使用过System.setProperty方法。 我错过了什么,或者只是System.setProperty不会覆盖现有的设置值。 如果是这样,我的选择在这里。

在Java中构造函数之前初始化final变量

有没有在Java构造函数中使用final变量的解决方案? 问题是,如果我初始化最终字段,如: private final String name = “a name”; 那么我不能在构造函数中使用它。 Java首先运行构造函数,然后运行字段。 有没有一个解决方案允许我访问构造函数中的最后一个字段?

为什么这个流没有返回元素?

我尝试将以下代码编写为流: AbstractDevice myDevice = null; for (AbstractDevice device : session.getWorkplace().getDevices()) { if (device.getPluginconfig().getPluginType().getId() == 1) { myDevice = device; } } 这段代码工作正常。 但是当我像这样重写它时它不再起作用了: myDevice = session.getWorkplace().getDevices().stream() .filter(s -> s.getPluginconfig().getPluginType().getId() == 1) .findFirst().get(); 我从流中返回的Optional没有值。 为什么? 编辑 当我尝试这个时(我仍然从getDevices()获得两个设备): List testList = session.getWorkplace().getDevices() .stream().collect(Collectors.toList()); testList为空。 所以我的设备List流似乎出了问题? 它是一个JavaEE应用程序,我从相应的实体获取我的设备: @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) @JoinTable(name = “Workplace_AbstractDevice”, joinColumns = { […]

合成方法的惩罚是什么?

在Eclipse下开发Java应用程序时,我收到了关于“通过合成方法访问的方法/值”的警告。 解决方案只是将私有访问修饰符更改为默认级别。 这让我想知道:使用合成方法的惩罚是什么? 有一些? 我假设编译器/ Eclipse会引发警告,但它是如此相关的东西还是可以安全忽略的东西? 我没有在这里看到这些信息,所以我问。

java三元运算符

有人可以解释为什么这段代码? Collection c = (5 == 5) ? new ArrayList() : new HashSet(); 产生以下编译器错误: 不兼容的条件操作数类型ArrayList和HashSet 由于我不理解的原因,以下修复了该问题 Collection c = (5 == 5) ? (Collection) new ArrayList() : new HashSet(); 我正在使用Java 1.4。

java中的jcomboboxfilter – 外观独立

我有一个简单的JComboBoxfilter代码,如下所示: import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class FilterComboBox extends JComboBox { private List array; public FilterComboBox(List array) { super(array.toArray()); this.array = array; this.setEditable(true); final JTextField textfield = (JTextField) this.getEditor().getEditorComponent(); textfield.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent ke) { SwingUtilities.invokeLater(new Runnable() […]