java - 如何放大或缩小 JComponent?

标签 java swing scaling jtextarea paintcomponent

在我的应用程序中,我需要在面板上的特定位置绘制 JTextArea,并且需要能够放大和缩小它。

为了定位它,我可以使用绝对定位,但缩放会带来挑战 - 我可以通过调整 paintComponent 方法轻松缩小它:

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.scale(0.5,0.5);
    super.paintComponent(g2);
}

但是放大不起作用 - 因为我显式使用 setBounds 设置了组件的边界,所以放大后的组件的一部分最终不会被绘制。怎么解决呢?

编辑:一些解释。

我维护的应用程序是一种图形编辑器,我需要添加一个向工作区域添加注释之类的功能,以便用户可以直接在该工作区域上键入文本。与大多数图形编辑器一样,工作区域可以移动和放大/缩小,因此用户键入文本的文本区域也应该移动和缩放。

最佳答案

如果文本组件在缩放时必须保持可编辑状态,您可以按比例因子(粗略)缩放使用的Font,如 here 所示。

image

关于java - 如何放大或缩小 JComponent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769830/

相关文章:

algorithm - 我应该使用什么算法来平滑地缩放图形或 map ?

java - 其他面板的背景图片问题

java - 如何组织java swing应用程序架构?

java - 模拟快餐店的排队和请求服务的程序

java - 单个对象的自定义迭代器

java - JPanel 平滑运动并同时更新 JLabel

mysql - 不同DBMS之间的可扩展性比较

twitter-bootstrap - 如何缩放轮播中的图像?

java - 在构造函数中调用可重写的方法

java - JavaFx 中的 Jgraph