我的问题是:如果这两个功能有什么不同?我的意思是我知道他们会返回不同的东西,但是在一个元素中的元素数量可能与第二个元素中的元素数量不同.我会尽力解释.我为我的一个类实现了TreeModel,试图在基于JTree的PC上查看文件.所以这是它的一部分:
public Object getChild(Object parent, int index) {
File[] children = ((File) parent).listFiles();
if(children == null || index < 0 || index >= children.length) {
return null;
}
File result = new MyFile(children[index]);
return result;
}
public int getChildCount(Object parent) {
//---
//String[] children = ((File)parent).list();
File[] children = ((File)parent).listFiles();
//---
if(children == null) {
return 0;
}
return children.length;
}
Run Code Online (Sandbox Code Playgroud)
我标记了有趣的代码.如果我改变了这两条线为这个评论一个,有时我得到NullPointerException装载的TreeModel后:jtree.setModel(treeModel);.这没有注释不会造成任何麻烦.我检查了文档,它说没有什么不寻常的,包括通过两种方法返回null.这里发生了什么?
javax.faces.flow.FlowScoped和javax.enterprise.context.ConversationScopedbean 之间有什么区别,何时应该在应用程序中使用?据我所知,他们在某种程度上是相似的,但我无法用我在互联网上找到的资料来弄明白?
情况是user1给user2提供了权限:
GRANT CREATE ANY TABLE, SELECT ANY TABLE TO user2;
Run Code Online (Sandbox Code Playgroud)
登录user2后,我正在尝试创建表:
CREATE TABLE user1.test(id NUMBER PRIMARY KEY);
Run Code Online (Sandbox Code Playgroud)
结果是ORA-01031 - insufficient privileges
我可以在自己的架构上创建表并从其他架构中选择表.我认为这CREATE ANY TABLE解决了问题,但它看起来是另一回事.啊,两个用户都有无限的表空间.我还能保证什么?
我在模态对话框中有一个表单,在关闭(实际上隐藏)一个表单后,我想重置用户可能已更改的所有输入。我想如下:
<p:dialog widgetVar="myDialog">
<h:form id="formId">
<!-- ... -->
<p:commandButton value="Cancel" onclick="myDialog.hide();"
update="formId">
<p:resetInput target="formId" />
</p:commandButton>
</h:form>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
但结果并不是我所期望的。经过一段时间的搜索,我找到了一个解决方案,将process="@this"属性添加到<p:commandButton>. 我的问题是为什么有必要?在需要这个过程的背景下真正发生了什么。我根本没有真正了解过程属性的概念。
我在这里使用以前的主题编写了我自己的ImagePanel:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image = null;
public ImagePanel(BufferedImage im) {
image = im;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我认为在普通的JPanel上添加这个面板会很好(使用这个NetBeans的东西将它放在框架上会更容易).所以我添加了一个,NetBeans为我生成了一些代码:
private javax.swing.JPanel pnlImagePanel;
这就是我想要显示图像的时刻,所以:
File selectedFile = new File(path);
try {
image = ImageIO.read(selectedFile);
} catch(IOException ex) {
throw new RuntimeException(ex);
}
ImagePanel imPanel = new ImagePanel(image);
this.pnlImagePanel = imPanel;
this.pnlImagePanel.repaint();
Run Code Online (Sandbox Code Playgroud)
问题很明显 - 我没有结果.不应该工作吗?我已经覆盖了paintComponent方法,因此应该触发多态.或者是我缺少的东西?
Object subclass: Node [
|value|
new [
Transcript show: 'Test'.
value := 6.
]
getValue [
^value.
]
set:sth [
value := sth.
]
]
|data|
data := Node new.
Transcript show: (data getValue) printString ; cr. "nil"
data set:5.
Transcript show: (data getValue) printString. "5"
Run Code Online (Sandbox Code Playgroud)
问题是new永远不会调用方法,所以我不能设置值或调用initialize函数.此外之后:
object := Node new. "Not called"
object new. "Here is called"
Run Code Online (Sandbox Code Playgroud)
该方法被调用.如何解决?