我想将我的JLabel左对齐。StringlText="mybook";JLabellabel=newJLabel(lText);label.setBorder(newEmptyBorder(25,0,25,500));我尝试使用EmptyBorder来做到这一点,但它没有正确对齐。我正在使用FlowLayout 最佳答案 FlowLayout默认使用CENTER对齐方式。尝试为您的JLabelJPanel容器使用LEFT对齐方式myJPanel.setLayout(newFlowLayout(FlowLayout.LEFT));
我可以知道如何确定是否在JPanel中找到了一个组件吗?booleanisThisComponentFoundInJPanel(Componentc){Component[]components=jPanel.getComponents();for(Componentcomponent:components){if(c==component){returntrue;}}returnfalse;}使用循环效率不高。有没有更好的办法? 最佳答案 if(c.getParent()==jPanel)如果您不想要直接的父子关系(在设计良好的面
我有一个包含JPanel的JavaJFrame。在该JPanel中,有两个独立的JPanel。当用户单击第一个JPanel中的按钮时,需要向另一个JPanel发送一条消息,通知它单击了哪个按钮。在这样的对象之间发送消息的最简单方法是什么? 最佳答案 对于mKorbel(和原始海报):我推荐的是更松散的耦合,一个JPanel不知道另一个JPanel,并且所有连接都是通过某种控件完成的。例如,借用你的一些代码:复制TextNorthPanel2.javaimportjava.awt.*;importjavax.swing.*;publi
在得知dispose()应该在Graphics/Graphics2D对象上调用后,我着手改变我的游戏以合并它.当我在JPanel的覆盖paintComponent(Graphicsg)中添加g2d.dispose()时,我添加的组件(扩展JLabel类)在没有呈现的地方我仍然可以点击它们等但它们不会被绘制。我用普通的JLabel和JButton进行了测试,效果相同(虽然JButton在鼠标悬停时呈现)。所以我的问题是为什么会发生这种情况?这是一个SSCCE来演示:在MainMenuPanel类的paintComponent中取消对dispose()的调用后:importjava.awt
我有一个JFrame的子类,它使用从JPanel扩展的类publicclassHelloWorldextendsJPanelimplementsKeyListener我将HelloWorld对象添加到框架-app.add(helloWorld);。现在,当我按下任何键盘键时,KeyListener方法都不会被调用,并且helloWorld似乎没有窗口焦点。我也尝试调用helloWorld.requestFocusInWindow();但仍然没有响应。如何让它响应按键? 最佳答案 您是否将HelloWorld面板的KeyListene
谁能解释一下JPanel.repaint()方法和JFrame.repaint()方法之间的区别,我想两者都调用了paintComponent()JPanel中的方法。请说明,谢谢 最佳答案 在任何组件上调用repaint()都会向重绘管理器添加一个请求以绘制该组件。如果条件正确,管理器将安排调用组件的paint(...)方法。由于Component的paint方法随后将调用paintComponent(...)、paintBorder(...)和paintChildren(...)这将使组件绘制自身、其边框和级联绘制递归到其所有子
我有一个带有paintComponent()函数的JPanel。我会调用它一次,然后当用户单击不同的JButton时,我会设置一些标志并想再次调用此函数,因为在设置标志后它会做一些稍微不同的事情。所以这就是我想知道的:如何清除paintComponent中的现有内容?要重绘,是否只需再次调用paintComponent即可?目前我正在尝试以下操作:flag2=true;repaint();//Iexpect(want)paintComponenttobecalledagain在paint组件中,我会做类似的事情:if(flag2==true){g.drawRect(...);}else
我有一个扩展JPanel的简单对象,当在这个对象上调用update()方法时,它意味着向面板添加一些标签,然后重新绘制.但是在调用更新方法后标签没有显示,下面是更新代码:publicvoidupdate(){GridBagConstraintsconstraints=newGridBagConstraints();if(cardsHidden){for(inti=0;i有什么想法吗?谢谢编辑已解决:事实证明,HoleCardsPanel没有正确添加到其父框架中。一旦解决了这个问题,添加新的JLabel就可以正常工作了。我也:使用SwingUtillities.invokeLater添加
Java自定义拖放-没有对TransferHandler的回调。我想为JPanel实现自定义拖放功能子类。我遵循标准DnD教程的指南:DragandDropandDataTransfer从表面上看,事情似乎很简单,但当我真正尝试一下,我没有发现任何DnD行为正在发生的迹象。在事实上,我的TransferHandler中的任何方法都没有被调用。那么,让我们回顾一下我做了什么......我创建了自己的Container类,它声明自己扩展JPanel:publicclassDnDUnitPanelextendsJPanel{...}我从这个演示中复制了ListTransferHandler:
我想要一个可调整大小的面板,它始终具有固定深度的顶部绿色面板。即所有高度的变化应该只影响黄色面板。我下面的代码几乎没问题,除了绿色面板的大小略有不同。我该怎么做?Panel.setLayout(newBoxLayout(Panel,BoxLayout.Y_AXIS));Panel.setAlignmentX(Component.LEFT_ALIGNMENT);JPanelTopPanel=newJPanel();TopPanel.setPreferredSize(newDimension(80,150));TopPanel.setVisible(true);TopPanel.setBa