草庐IT

java - JComponent 不绘制到 JPanel

我有一个扩展JComponent的自定义组件,它覆盖了paintComponent(Graphicsg)方法,但是当我尝试将它添加到我的JPanel时,它不起作用,没有绘制任何东西。这是我的代码:publicclassSimpleComponentextendsJComponent{intx,y,width,height;publicSimpleComponent(intx,inty,intwidth,intheight){this.x=x;this.y=y;}@OverridepublicvoidpaintComponent(Graphicsg){Graphics2Dg2=(Grap

java - AffineTransform 似乎忽略了组件边界

我有以下内容:publicclassParametricEQViewextendsJPanelimplementsPluginView{privatestaticfinalintBAND_WIDTH=3;privatestaticfinalintTHROW_HEIGHT=64;privatestaticfinalintWIDTH=128*BAND_WIDTH+2*MARGIN;privatestaticfinalintHEIGHT=2*THROW_HEIGHT+2*MARGIN;privatestaticfinalintMID_HEIGHT=THROW_HEIGHT+MARGIN;pr

java - Swing组件默认渐变背景

有没有办法将swing组件(例如JPanel)的所有实例的默认背景绘制更改为使用渐变背景绘制?或者我是否需要创建一个使用渐变绘制的JPanel扩展,然后在我的应用程序中到处使用它而不是JPanel? 最佳答案 恕我直言,将Swing组件子类化并覆盖其paintComponent方法来进行渐变绘制会更容易。然后,如您所说,在整个应用程序中使用此自定义组件。使用UI属性可能会很棘手,因为它们在所有LaF中可能不一致。 关于java-Swing组件默认渐变背景,我们在StackOverflow

java - GridBagLayout 没有正确对齐图像

最初我有一张甲板图像和图像下方的文本“Deck”,看起来不错publicclassGuiTutextendsJPanel{privateGridBagConstraintsc=newGridBagConstraints();privateJLabeldeckLabel=newJLabel();publicGuiTut(){setLayout(newGridBagLayout());try{deck=ImageIO.read(newFile("resources/images/deck.jpg"));}catch(Exceptione){}c.gridx=0;c.gridy=0;JLab

java - 我应该将组件添加到 JFrame 还是它的 contentPane?

当我在我的第一个Java类(class)中学习创建JavaGUI:s时,我被教导将我的窗口创建为JFrame实例,然后将一个JPanel添加到每个JFrame最后将所有GUI组件添加到JPanel:classExampleextendsJFrame{Example(){JPanelpanel=newJPanel();this.add(panel);//Createcomponentshereandaddthemtopanel//Perhapsalsochangethelayoutmanagerofpanelthis.pack();this.setVisibility(true);}pu

java - 更改 JPanel 及其所有元素的字体大小

我正在尝试创建一个Swing面板,其元素的字体大小与swing应用程序的其余部分不同。最初,对几个组件使用setFont没有造成任何问题。现在我有几个组件(及其所有子组件),所以这个解决方案不切实际。我搜索过有关更改swing组件的默认UI属性的信息。我发现主要是使用UIManager,它会全局更改属性。这对我不起作用,因为我想保留所有其他面板的当前字体设置。目前(因为我不喜欢不先尝试就发帖),我有一个这样的算法:publicstaticvoidfixFont(Containerc){c.setFont(c.getFont().deriveFont(10.0f));Component[

两个组件的java swing布局

+--------------------------------------------+|+-------++----------+|||+---+||+-----+|||||A||||B|||||+---+||+-----+|||+-------++----------+|+--------------------------------------------+^||Center背景:我有一个JButton(“A”),大小为50x25,位于JPanel(FlowLayout.CENTER)中JLabel(“B”),大小为100x25,位于JPanel(FlowLayout.RI

java - 如何在 JPanel 中使用 paint 方法

我正在用Java开发老虎机,到目前为止我创建了一个按钮,它会随机生成两张图片。我的代码可以编译,但是当我运行它时,我放入paint方法中的所有内容都没有显示出来。我有什么想念的吗?感谢您的帮助,这是我的一些代码。publicvoidpaint(Graphicsg){super.paintComponents(g);g.drawString("Int1is"+int1,30,30);g.drawString("Int2is"+int2,30,80);switch(int1){case0:g.setColor(Color.white);g.fillRect(300,300,300,500)

java - JPanel 占用的空间超出了它的需要。我怎样才能缩小它?

更新:我因发布无效代码而受到合理的批评。我已经牢记这一点,并用一个完整的工作示例更新了这篇文章。我也相应地更新了描述:我有一个非常简单的javaswingGUI,其组件占用的垂直(Y)空间看起来与最大Y范围组件所用的空间数量相等,但完全没有必要。我曾尝试使用preferredSize提示缩小那些不需要那么多垂直空间的组件,但无济于事。基本布局很简单:有一个主窗口和三个垂直面板。布局是一个简单的GridLayout(我更愿意保持这种方式,除非有人告诉我我需要的东西不能用GridLayout完成)。所有三个面板似乎都占据了相同数量的垂直空间,即使在slider的情况下,这是巨大的空间浪费。

java - JPanel 上边距为 0

有什么方法可以为JPanel添加0边距/填充以使其适合它假设的整个屏幕?这就是我要说的:(看到面板上方的小空间了吗?为什么它不也覆盖它?)这是它的设置方式:labelStatus=newJLabel("\n\nSorry,theservercrashed!");labelStatus.setForeground(Color.WHITE.brighter());statusPanel=newJPanel();statusPanel.setBackground(Color.RED.darker());statusPanel.add(labelStatus);statusPanel.setP