Tag: 组件

MediaTracker – 如何使用它,有什么好处,还是有替代品?

在代码库中,我们inheritance了MediaTracker的用法总是在每个代码块中本地完成。 new MediaTracker(new Canvas()); mediatracker.addImage(i, 1); try { mediatracker.waitForAll(); } catch (InterruptedException e) { } mediatracker.removeImage(i); 决定这是低效的,我最终用静态实例和方法替换它: final static protected MediaTracker mediatracker = new MediaTracker(new Canvas()); static protected void checkImageIsReady(Image i) { mediatracker.addImage(i, 1); try { mediatracker.waitForAll(); } catch (InterruptedException e) { } mediatracker.removeImage(i); } 到目前为止,没有任何不良影响。 还有另一种可能的方法 – 将MediaTracker附加到每个组件(通常是Frame或JFrame),这强烈暗示构造函数文档采用的方法。 所以我有两个问题: 如何以及为何使用MediaTracker? 有什么选择?

JSF中的递归(c:forEach vs. ui:repeat)

我试图通过JSF中的递归来构建导航树。 我已将navigationNode组件定义为: 我的树被宣布为: rootNode = new DefaultMutableTreeNode(new NodeData(“Dashboard”, “dashboard.xhtml”), true); DefaultMutableTreeNode configurationsNode = new DefaultMutableTreeNode(new NodeData(“Configurations”, “configurations.xhtml”), true); rootNode.add(configurationsNode); 我叫组件: 问题是,这会导致StackOverflowError 。 在JSF中有一些引用构建递归的引用(例如, c:forEach vs ui:在Facelets中重复 )。 常见问题似乎是混合构建时和渲染时组件/标签。 就我而言: 我的复合组件实际上是一个标签,它在构建树时执行 ui:repeat是一个实际的JSF组件,在呈现树时进行评​​估 是子组件navigation:navigationNode实际上是在ui:repeat组件之前处理的吗? 如果是这样, #{child}使用了什么对象? 它是否为null(似乎不是这样)? 这里的问题是,实际创建子组件时甚至没有关心ui:repeat,所以每次创建一个新的子组件时,即使它不一定需要吗? c:forEach vs ui:在Facelets中重复文章有一个单独的部分(递归)。 建议是使用c:forEach 。 我试过这个,但它仍然给我相同的StackOverflowError ,具有我无法理解的不同跟踪。 我知道我们也可以通过扩展UIComponent来构建组件,但是这种方法(在Java代码中编写html)看起来很难看。 我宁愿使用MVC样式/模板。 但是,如果没有其他方法,我是否必须将此类递归实现为UIComponent?

Java Swing在运行时添加/删除jButtons

我的应用程序有一个模块,允许用户在运行时在jLayeredpane上添加jButton。 我想为这个动态添加的内容添加动作侦听器,并且我还必须提供在运行时删除动态添加的按钮的权限。 有没有办法做到这一点? private Map dynamicButtons; public void addButton(String name) { JButton b = new JButton(name); b.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLayeredPane2.add(b); dynamicButtons.put(name, b); jLayeredPane2.invalidate(); } public void removeButton(String name) { JButton b = dynamicButtons.remove(name); jLayeredPane2.remove(b); jLayeredPane2.invalidate(); }

组件的定位(如何放置几个相同尺寸的按钮中心屏幕)

将组件准确放置在JFrame所需位置的可靠推荐方法? 在我的例子中,我有一个简单的Jframe充当菜单。 框架由顶部的标签和中间的三个按钮组成。 使用自由设计,3个按钮似乎漂浮在框架上,当我运行项目时,它们会转变为难看的位置。 只有当3个按钮被拖动到最大长度(到框架的每一侧)时,它们才会表现为“锁定到位”。 这非常难看。我希望3个按钮位于框架中间的中心位置。 我正在使用Netbeans。 自由设计是我一直在使用的,但只有当有很多组件才能将它们“插入”到其他位置时才会很好。 使用其他设置布局管理器无效。 有经验的人如何处理这样的问题? 我对彻底的学习很感兴趣。 如果这个问题很痛苦,业余人士至少可以推荐一本教科书或其他GUI学习资源吗? (我已经两次使用“首先使用java的对象”,并且只有非常基本的GUI构建解释)。 感谢任何方向。

使用BorderLayout从JPanel中删除CENTER元素

有没有办法删除添加到带有BorderLayout的JPanel的CENTER中的Component ,而不必引用Component本身?

JFrame不提供任何组件

我使用以下代码创建一个非常简单的JFrame ,但由于某种原因它不显示任何组件,只是一个空白框架。 为什么会这样? 我创建了很多次框架,我无法弄清楚出了什么问题。 代码是: Main(){ JFrame frame = new JFrame(“Colorizer | By: NonameSL”); frame.setSize(400,200); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); frame.setContentPane(panel); textField=new JTextField(“Enter your name!”); textField.setBounds(0,0,40,200); textField.setVisible(true); frame.getContentPane().add(textField); button=new JButton(“Go!”); button.setBounds(0, 200, 40, 200); button.setVisible(true); frame.getContentPane().add(button); rectangle=new RecShape(Color.WHITE); rectangle.setBounds(0,40,400,160); rectangle.setVisible(false); frame.getContentPane().add(rectangle); Main.frame=frame; registerButton(); } RecShape类是我创建的一个类,它只是在屏幕上创建一个矩形形状。 哪里不对?

为什么不扩展JFrame和其他组件?

我已经看到过这里出现过几次,但在我看过的post中,没有人解释过。 为什么我不应该扩展JFrame(或任何组件)? 是否存在我应该扩展组件的条件,或者这是一个你不应该遵守的坚定规则?