有没有人知道Eclipse插件要通过矩形区域而不是"正常"选择进行选择?(下图说明不同)
the asterisks here represent a "normal" selection region *****
************
******************
***** and can all be selected as one block of text
here is a ************* rectangular
selection ************* region
that I wo ************* uld like to be able
to select and delete
Run Code Online (Sandbox Code Playgroud) 我在假设,如果你有一个包含一个Java集<>内(或在地图<>对于这个问题的关键)的对象,所使用的任何字段,以确定身份或关系(通过纠正hashCode(),equals(),compareTo()等.)如果不对集合上的操作造成未指定的行为,则无法更改?(编辑:在其他问题中提到)
(换句话说,这些字段应该是不可变的,或者您应该要求从集合中删除对象,然后更改,然后重新插入.)
我问的原因是我正在阅读Hibernate Annotations参考指南,它有一个例子,其中有一个HashSet<Toy>但是Toy类有字段name并且serial是可变的并且也用于hashCode()计算......一个红旗在我脑海中消失了我只想确保理解它的含义.
有没有快速序列图编辑器的经验?即时显示+文本源代码+ Java实现的组合对我来说非常有吸引力,但是我无法弄清楚如何使语法按我的意愿行事,文档也不是很清楚.这是一个人为的例子:
al:Actor
bill:Actor
atm:ATM[a]
bank:Bank[a]
al:atm.give me $10
atm:al has $3=bank.check al's account balance
al:atm.what time is it
atm:al.it's now
atm:al.stop bugging me
atm:al.you only have $3
atm:bill.and don't you open your mouth
bill:atm.who asked you?
bill:atm.give me $20
al:atm.hey, I'm not finished!
atm:bill has $765=bank.check bill's account balance
atm:yes I'm sure, bill has $765=bank.hmm are you sure?
atm:bill.here's $20, now go away
atm:great, he's a cool dude=bank.I just gave Bill $20
al:atm.what about my $10?
atm:al.read …Run Code Online (Sandbox Code Playgroud) 我想将一些任意文本转换为Shape(java.awt.Shape),然后描绘/填充Shape以绘制它.我怎样才能做到这一点?
wprintf(L"Selecting Audio Input Device: %s\n",
varName.bstrVal);
if(0 == strcmp(varName.bstrVal, "IP Camera [JPEG/MJPEG]"))...
Run Code Online (Sandbox Code Playgroud)
以上报道:
error C2664: 'strcmp' : cannot convert parameter 1 from 'BSTR' to 'const char *'
Run Code Online (Sandbox Code Playgroud) 如果我com.example.test.Enum2.Test在下面的代码中有一个类,为什么getCanonicalName()返回com.example.test.Enum2.Test但Class.forName()需要"com.example.test.Enum2$Test"作为参数?
有没有办法保持一致,这样我可以通过名称序列化/反序列化枚举值,而不必检查每个$vs .可能性,当枚举是一个嵌套类?
package com.example.test;
import java.util.Arrays;
public class Enum2 {
enum Test {
FOO, BAR, BAZ;
}
public static void main(String[] args) {
for (String className : Arrays.asList(
"com.example.test.Enum2.Test",
"com.example.test.Enum2$Test"))
{
try {
Class<?> cl = Class.forName(className);
System.out.println(className+" found: "+cl.getCanonicalName());
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
System.out.println(Test.FOO.getDeclaringClass().getCanonicalName());
}
}
Run Code Online (Sandbox Code Playgroud)
澄清:我正在寻找一种在实际应用中处理这个问题的好方法(不仅仅是上面提到的测试用例),或者:
一个.使用getCanonicalName()输出序列化/反序列化(仅点缀名称),并Class.forName()依次尝试每种可能性,例如"com.example.test.Enum2.Test",然后"com.example.test.Enum2$Test",然后"com.example.test$Enum2$Test",等等.
湾 使用正确的$表示法,这样 …
我正在寻找相应的方法,用于Multimap迭代a的条目Map,即:
Map<K,V> map = ...;
for (Map.Entry<K,V> entry : map.entrySet())
{
K k = entry.getKey();
V v = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)
以下哪项更好?(或者更重要的是,有什么区别?)
Multimap<K,V> mmap = ...;
for (Map.Entry<K,Collection<V>> entry : mmap.asMap().entrySet())
{
K k = entry.getKey();
Collection<V> v = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)
要么
Multimap<K,V> mmap = ...;
for (K k : mmap.keySet())
{
Collection<V> v = mmap.get(k);
}
Run Code Online (Sandbox Code Playgroud) 如果创建一个视口大于JScrollPane组件的JScrollPane,它会在左上角显示该组件.
有没有办法改变这种行为,所以它显示组件居中?
示例程序如下.
澄清:
我有一个组件有(宽度,高度)=(cw,ch).
我有一个JScrollPane,其视口有(宽度,高度)=(vw,vh).
组件可能变大或变小.我想要一种方法来使用滚动条相对于视口的中心点定位组件的中心点,因此如果组件的一个或两个维度小于视口,则组件将显示在视口的中心.
默认的滚动窗格行为将组件的左上角相对于视口的左上角定位.
我要问的是如何改变参考点.我不确定这对于默认的JScrollPane有多容易,所以如果它不容易,那么我将学习我能做什么,并想到一个不同的方法.
package com.example.test.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SimpleScroller extends JFrame {
static class Thingy extends JPanel
{
private double size = 20.0;
@Override public Dimension getPreferredSize() {
int isize = (int) this.size;
return new Dimension(isize, isize);
}
@Override protected void paintComponent(Graphics g) {
super.paintComponent(g);
int[] x = {0, 100, …Run Code Online (Sandbox Code Playgroud) 我正在与一个团队合作开发一个新的Java API,用于我们的一个内部项目.我们可能无法花时间停止并散布Java接口的所有细节,并在开始时使它们100%完美.
我们有一些核心功能必须预先设置,其他的可能会在以后添加,但现在并不重要,+现在花时间设计这些功能是我们没有的奢侈品.特别是因为我们还没有足够的信息来获得所有的设计细节.
API的Java方法是,一旦你发布了一个接口,它实际上是不可变的,你永远不应该改变它.
有没有办法计划随着时间推移的API演变?我已经阅读了这个问题,我想我们可以这样做:
// first release
interface IDoSomething
{
public void hop();
public void skip();
public void jump();
}
// later
interface IDoSomething2 extends IDoSomething
{
public void waxFloor(Floor floor);
public void topDessert(Dessert dessert);
}
// later still
interface IDoSomething3 extends IDoSomething2
{
public void slice(Sliceable object);
public void dice(Diceable object);
}
Run Code Online (Sandbox Code Playgroud)
然后升级我们的类从支持IDoSomething到IDoSomething2然后IDoSomething3,但这似乎有一个代码气味问题.
然后我猜有Guava的标记界面的方式,@Beta所以应用程序可以在被冻结之前使用这些风险,但我不知道这是否正确.
java ×6
swing ×2
activex ×1
api ×1
bytebuffer ×1
c++ ×1
collections ×1
com ×1
eclipse ×1
editor ×1
graphics ×1
guava ×1
identity ×1
interface ×1
jscrollpane ×1
loops ×1
multimap ×1
mutable ×1
nested-class ×1
reflection ×1
text ×1
windows ×1