java - Java GUI 中的旋转方形面板

标签 java swing user-interface awt

我想知道是否可以实现一个方形但旋转 90 度的 GUI 面板(可能是 JPanel)。显然,将有一个包含此面板的顶级容器,从视觉上看,主面板就是这个旋转的方形面板。

更具体地说,我会将一个面板(称为“A”)分成 4 个相等的正方形子面板,并用 JLabel 填充这些子面板,为此我考虑使用 GridLayout。最后,我会将“A”旋转 90 度以获得我想要的效果。

从我对其他类似问题的阅读来看,您似乎无法旋转 JPanel 本身,但可以旋转其中包含的内容。这适用于我这里的情况吗?如果有人能指出,将不胜感激。谢谢。

最佳答案

关键的事情似乎是在旋转图形上下文后 绘制组件。这是一个例子:

enter image description here

附录 1:正如@Atreys 评论的那样,绘制了旋转的组件,但交互效果很差。如果组件必须保持可用,则还应转换事件坐标。比较这个(相当)复杂 example 镜像组件。

附录2:如果你还需要变换鼠标坐标,这个example可能会有帮助。

附录 3:或者,考虑检查的 drawString() 示例 here .

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/** @see https://stackoverflow.com/questions/6333464 */
public class RotatePanel extends JPanel {

    public RotatePanel() {
        this.setPreferredSize(new Dimension(320, 240));
        this.add(new JLabel("Hello World!", JLabel.CENTER));
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        int w2 = getWidth() / 2;
        int h2 = getHeight() / 2;
        g2d.rotate(-Math.PI / 2, w2, h2);
        super.paintComponent(g);
    }

    private void display() {
        JFrame f = new JFrame("RotatePanel");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new RotatePanel().display();
            }
        });
    }
}

关于java - Java GUI 中的旋转方形面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333464/

相关文章:

Java Long Compare 和 ValueOf 方法未定义

JAVA:仅当在 JTextField 中进行更改时才启用 JButton

java - 如何避免代码中出现 java.lang.NullPointerException?

java - 为什么调用 fireTableDataChanged() 方法时我的 ListSelectionListener 总是被触发

java - 我无法在 JPanel 上查看 BufferedImage 图像

java - JProgressBar 不会在 actionPerformed 内更新 - Java Swing

user-interface - 在网络应用程序(或一般情况)中指示 "draggability"的最佳方式?

eclipse - 哪些 UI 模型工具可用于生成 Eclipse UI "screenshots"?

java - Builder类中的director如何将一个null int设置为0?

java - 从 ActionListener 方法访问类变量