如何实现jpanel翻转效果如图 如图上的jpanel翻转效果,并且翻转是面板一边高一边低 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将组件转成图片,还要变形之后再绘出首先要告诉你一点是,失真和锯齿是不可避免的而且可能还会相当严重效果可能不会很理想给你个以前我写的简单的组件变图片的例子吧这个界面上半部分是组件下半部分是这些组件变成图片后旋转了一定角度的效果import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.GridLayout;import java.awt.RenderingHints;import java.awt.image.BufferedImage;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class Component2Img extends JFrame { private JButton btn1; private JButton btn2; private JButton btn3; private JPanel pnlMain; private JPanel pnlTrans; private BufferedImage bufImg = null; public Component2Img() { initialize(); } private void initialize() { this.setSize(400, 600); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); Container cont = this.getContentPane(); cont.setLayout(new GridLayout(2,0)); pnlMain = new JPanel(); btn1 = new JButton("OK"); btn2 = new JButton("Cancel"); btn3 = new JButton("Exit"); pnlMain.setLayout(null); btn1.setBounds(150, 50, 100, 30); btn2.setBounds(150, 100, 100, 30); btn3.setBounds(150, 150, 100, 30); pnlMain.setBorder(BorderFactory.createEtchedBorder()); pnlMain.add(btn1); pnlMain.add(btn2); pnlMain.add(btn3); bufImg = createImage(pnlMain); pnlTrans = new JPanel() { protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(bufImg, 0, 0, null); } }; cont.add(pnlMain); cont.add(pnlTrans); this.setVisible(true); bufImg = createImage(pnlMain); } public static BufferedImage createImage(JPanel panel) { BufferedImage panelImage = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = (Graphics2D) panelImage.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, 400, 300); g2d.translate(-20, 40); double angleValue = Math.toRadians(-10); g2d.rotate(angleValue); panel.paint(g2d); g2d.dispose(); return panelImage; } public static void main(String[] args) { new Component2Img(); }} FileOutputStream的刷新问题 java日期中 .parse() 报错,在线等 引入包的时候,import java.sql.*和分别引入有区别么? 学习JAVA 一个半月时间,遇到一些基本问题, 烦请高手们的解答下或菜鸟们共同学习下. servlet通信问题!! 文件互斥访问 关于数组的问题! 关于线程的几个小问题!!!!!!!!! 请问,什么情况下可以捕获异常,不加处理 求实用的java小程序,最好有源码!!! c版块看到的,转过来共享下 android手机如何直接访问SD卡
首先要告诉你一点是,失真和锯齿是不可避免的
而且可能还会相当严重
效果可能不会很理想给你个以前我写的简单的组件变图片的例子吧
这个界面上半部分是组件
下半部分是这些组件变成图片后旋转了一定角度的效果import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Component2Img extends JFrame {
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JPanel pnlMain;
private JPanel pnlTrans;
private BufferedImage bufImg = null;
public Component2Img() {
initialize();
}
private void initialize() {
this.setSize(400, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
Container cont = this.getContentPane();
cont.setLayout(new GridLayout(2,0));
pnlMain = new JPanel();
btn1 = new JButton("OK");
btn2 = new JButton("Cancel");
btn3 = new JButton("Exit");
pnlMain.setLayout(null);
btn1.setBounds(150, 50, 100, 30);
btn2.setBounds(150, 100, 100, 30);
btn3.setBounds(150, 150, 100, 30);
pnlMain.setBorder(BorderFactory.createEtchedBorder());
pnlMain.add(btn1);
pnlMain.add(btn2);
pnlMain.add(btn3);
bufImg = createImage(pnlMain);
pnlTrans = new JPanel() {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(bufImg, 0, 0, null);
}
};
cont.add(pnlMain);
cont.add(pnlTrans);
this.setVisible(true);
bufImg = createImage(pnlMain);
} public static BufferedImage createImage(JPanel panel) {
BufferedImage panelImage = new BufferedImage(400, 300,
BufferedImage.TYPE_INT_RGB); Graphics2D g2d = (Graphics2D) panelImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, 400, 300);
g2d.translate(-20, 40);
double angleValue = Math.toRadians(-10);
g2d.rotate(angleValue);
panel.paint(g2d);
g2d.dispose();
return panelImage;
}
public static void main(String[] args) {
new Component2Img();
}
}