草庐IT

java - 将组件绘制到 BufferedImage 会导致显示损坏

我正在使用JScrollNavigator组件描述here,为了提供一个导航窗口到一个大型的“类似Canvas”的CAD组件,我已经嵌入了JScrollPane.我试图适应JScrollNavigator绘制Canvas的缩略图以为用户提供一些额外的上下文。但是,这样做会导致我的应用程序主框架的渲染损坏。具体就是调用paint(Graphics)的Action在视口(viewport)组件(即我的主Canvas)上,传入Graphics由BufferedImage创建的对象导致后续显示损坏;如果我注释掉这一行,一切正常。以下是JScrollNavigator的覆盖paintCompon

java - 为什么 swing 会绘制两次简单的组件?

这是绘制椭圆的简单示例。publicclassSwingPainterextendsJFrame{publicSwingPainter(){super("SwingPainter");setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);getContentPane().add(newMySwingComponent());setSize(200,200);setVisible(true);}publicstaticvoidmain(String[]args){newSwingPainter();}classMySwingCom

java - "import foo.*"不应该也包括子包 "foo.bar.*"吗?

在学习Java时,我想到了许多教程中的一个对我来说相当令人困惑的特性。考虑示例教程中的以下两个导入:importjava.awt.*;importjava.awt.event.*;第一行显然导入了java.awt包,第二行导入了awt的子包。但是asterix不应该包含所有子包吗?因此,第一行应该可以解决问题-不需要第二行吗?如果不是:那么星号的真正用途/用途是什么?例如,在MySQL中使用SELECT*FROMfoo从表中选择所有字段,也许我愚蠢地认为这自然是这种情况。 最佳答案 不,包是作为一个整体。尽管按层次结构考虑它们通常很

java - 如何在自定义 JComponent 中使后台工作?

在下面的示例中,我在绿色背景上绘制了一个自定义的JComponent,但它没有出现。为什么会这样?publicclassTest_Background{publicstaticclassJEllipseextendsJComponent{privatefinalEllipse2Dellipse;publicJEllipse(intwidth,intheight){ellipse=newEllipse2D.Double(0,0,width,height);setOpaque(true);setBackground(Color.GREEN);}@OverridepublicDimensio

java - JLabel 的 ActionListener

我想学习如何为JLabel编写一个ActionListener。我想制作一个标签,当用户单击标签时为用户打开一个新框架。也许MouseListener可以工作,但我不知道怎么做。 最佳答案 我建议为此用途使用JTextField而不是JLabel。基于设计可聚焦的组件,它允许使用ActionListener,并且看起来和感觉起来更像一个HTML链接。例如这就是鼠标悬停在第一个链接上时的显示方式。链接标签/*License-LGPLLinkLabelUsingtheDesktopClassTherearealotoflinklabel

Java - 绘制标尺(带有 90 度角刻度线的线)

我正在使用JavaAWT在面板上画线(Line2D和Graphics2D.drawLine()),我想知道如何用刻度线,类似于:|----|----|----|----|----|我知道我想提前绘制刻度的位置。线条可以在任何位置,因此刻度线必须以相对于线条本身的角度绘制。我的基本几何学和在Java中应用它的能力让我失望了。:) 最佳答案 我建议你实现一个从左到右绘制简单水平标尺的标尺绘制方法使用Math.atan2计算出所需的角度.申请AffineTransform在调用标尺绘制方法之前进行平移和旋转。这是一个完整的测试程序。(Gr

java - JPanel渐变背景

我用谷歌搜索但没有找到正确答案。我有一个JPanel,我希望它有一个从上到下的渐变。我只想使用两种颜色。我怎样才能做到这一点? 最佳答案 给你:importjava.awt.Color;importjava.awt.GradientPaint;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing

java - 如何从 FileDialog 获取绝对路径?

我正在创建FileDialog并尝试获取FileDialog对象的FilePath。FileDialogfd=newFileDialog(this,"Open",FileDialog.LOAD);fd.setVisible(true);Stringpath=?;Filef=newFile(path);在这段代码中,我需要获得一个绝对的FilePath以便与File对象一起使用。在这种情况下如何获取文件路径? 最佳答案 你可以结合FileDialog.getDirectory()与FileDialog.getFile()获取完整路径。

java - 我如何在 java 中渲染图像上的包装文本

使用Java,是否有任何内置的方法来呈现文本以使其仅限于graphics2D对象上的矩形?我知道我可以使用Graphics2D.drawString但它只能绘制一行文本。我也知道我可以用FontMetricsfm=graphics.getFontMetrics(font);Rectangle2Drect=fm.getStringBounds("SomeText",graphics);在某些Graphics2D图形对象上使用某些Font字体呈现时获取有关字符串边界的信息。所以我可以开始循环,断开我的字符串等等,以强制它适合某个矩形。但我宁愿不必写那些...是否有任何现成的函数可以为我执行

java - 如何使用 Eclipse 构建 GUI? (我只想使用 swing/awt 而没有其他包)

我通常使用简单的文本编辑器和.bat文件来编写java代码来编译和运行。我不习惯像Eclipse或Netbeans这样的IDE,因此到目前为止我制作的每个GUI都是手写的。问题:我可以使用eclipse轻松构建GUI(例如拖放功能)吗?此生成的代码能否仅使用基本的java包(swing、awt)而不使用IDE提供的任何其他包?我这样说是因为-如果我错了请纠正我-从我目前所读的内容来看,我知道Eclipse和其他IDE使用它们自己的包(例如为了实现更好的布局)。我想避免这种依赖性,如果可能的话,复制粘贴Eclipse生成的代码,然后以我习惯的简单方式工作。提前致谢。[编辑]试用了几天后,