大家好!我正在尝试解决一个-显然-简单的问题,但我无法修复它。我正在使用Java/Swing库开发示例应用程序;我有一个JFrame和一个JPanel。我只想实现以下目标:JPanel必须在JFrame内居中。JPanel必须始终指定的大小setPreferredSize()方法。不得将其调整为低于此尺寸。我尝试使用GridBagLayout:这是我能做到的唯一方式。请参阅下面的示例:/*fileStackSample01.java*/importjava.awt.*;importjavax.swing.*;publicclassStackSample01{publicstaticvo
我有一个JFrame,在这个JFrame中我有一个我在上面绘制的JPanel,这个Panel可以是任何大小,所以我把它放在一个JScrollpane中,当面板大于窗口屏幕大小时我可以滚动。不幸的是,它没有像我预期的那样工作:使JFrame窗口小于JPanel大小不显示滚动条JScrollPane的大小现在似乎已锁定为我添加到其中的JPanel的大小,而之前它已调整为JFrame窗口的边界(它仍然有点这样做,但现在只是垂直方向?!)JPanel似乎采用JScrollpane的大小,无论我为首选大小设置了什么我确定我在做一些愚蠢的事情,如果有人能指出我将不胜感激!JPanelimageCa
我将JPanel子类化以覆盖paintComponent(Graphics),我想在jframe中将图像绘制到jpanel上。但是直到我更改jframe的大小后我的图像才显示出来。这是我的代码:publicclassImagePanelextendsJPanel{publicvoidsetImage(BufferedImagebi){image=bi;revalidate();}@OverridepublicvoidpaintComponent(Graphicsg){super.paintComponent(g);if(image!=null){g.drawImage(image,0,
我试图在一个JPanel中垂直对齐(居中)两个JLabel。JPanelpanel=newJPanel();panel.setPreferredSize(size);JLabellabel1=newJLabel(icon);JLabellabel2=newJLabel("text");panel.add(label1);panel.add(label2);我尝试使用setAligmentY()但没有成功。这两个标签始终出现在JPanel的顶部。UPD:标签应该像使用FlowLayout一样并排放置,但在JPanel的中间。 最佳答案
我有一个现有的JavaSwing应用程序。在应用程序的中间是一个JPanel,我希望能够对其进行放大和缩小。JPanel上有许多JComponents(主要是其他JPanels和JLabels)。此外,鼠标的位置也需要适当调整-因此即使JPanel已缩放,mouseevents也需要保持不变。因此,简单地更改每个component的paint方法似乎不太合理。编辑:好的,我使用MagnifierUIclass进行了一些小的修改,让它开始工作。然而,我创建的放大面板有错误的mouseevents-即面板是缩放的,mouseevents不是。 最佳答案
我在JFrame中有一个JPanel。我已经注册了一个KeyListener,我想基于它更新JPanel。我遇到的问题是我无法将焦点放在JPanel上,因此我的KeyListener将无法工作。我已经知道KeyListener可以正常工作,因为我用JFrame注册了它并且它工作正常。我的代码现在是这样的:myFrame.setFocusable(false);myPanel.setFocusable(true);myPanel.addKeyListener(myKL);myFrame.add(myPanel);有没有人遇到过这样的问题?在这方面我有什么遗漏吗?P.S.:我在JPanel
我正在制作一个GUI,它在一个大JPanel上方显示三个JToolBar。这些工具栏总体上非常大,所以我使用FlowLayout使它们在到达JFrame边框时换行到下一行。问题是,当它们换行到下一行时,它们会被下面的JPanel隐藏。我希望我可以强制包含工具栏的JPanel增长到足以显示所有工具栏。有没有办法做到这一点?或者有其他方法可以使这些工具栏可见吗? 最佳答案 我以前遇到过这个问题。我发现最好的解决方案是使用FlowLayout的修改版本,它考虑了垂直变化并将它们换行到下一行。这是此类布局的代码。importjava.awt
我有一个带有两个带有图片的标签的JPanel。我需要打印JPanel的这些内容。请帮帮我。我怎样才能只打印这个JPanel的内容,因为我的JFrame上也有不同的组件,但我只需要打印thisJPanel.谢谢。 最佳答案 这是一个打印任何Swing组件的示例。publicvoidprintComponenet(Componentcomponent){PrinterJobpj=PrinterJob.getPrinterJob();pj.setJobName("PrintComponent");pj.setPrintable(newPr
我有一个JPanel带有一个绘制的背景图像和一个布局管理器,其中包含其他较小的图像,所有这些都在一个JFrame中。背景图像非常大,我希望无论在大显示器还是小显示器上都能保持其纵横比。最终,我希望能够将我的LayoutManager及其单元格中的较小图像“粘合”到背景图片上。我四处寻找资源,似乎很多示例都使用BufferedImage但我不是;这会造成问题吗?我将在下面发布我的代码以绘制图像,如果我缺少任何信息,请告诉我。publicclassMonitorPanelextendsJPanel{Imageimg;publicMonitorPanel()throwsMalformedUR
AncestorListener、ComponentListener或HierarchyListener是否有一些规则或好的/坏的体验,使用JPanel监听更改的可见性和JComponents?其中一个比其他的更好或更安全吗?我特别想知道JPanel/JComponent何时以及如何隐藏。注意以下代码包含不正确的Swing规则,例如使用Thread.sleep(int),在这种情况下,我可以打印出正确的Listeners顺序在SwingGUI中importjava.awt.BorderLayout;importjava.awt.CardLayout;importjava.awt.eve