Tag: swing

将图像作为JPanel的背景

我是Java新手,目前正在用graphics创build一个游戏。 我有这个类从JFrame延伸。 在这个类中,我有许多JPanel需要一个图像作为背景。 据我所知,为了能够在JPanel中绘制图像,我需要一个从JPanel扩展而来的单独的类,并且该类的paintComponent方法将完成这项工作。 但是我不想为每个JPanel单独做一个类,我有太多它们; 事实上我只关心背景。 我该怎么做? 它是与一个匿名的内部类? 怎么样? 为了更好的理解我提供了一些代码: public GUI extends JFrame { private JPanel x; … public GUI() { x = new JPanel(); // put an image background to x }

什么是构build我的程序的最佳方式?

这是我第一次尝试自己创build一个完整的程序,到目前为止,我一直在做单独的方法和单独的课程,所以我想听听你的想法和build议,什么是最优化的方式创build我的GUI /程序。 这个想法是,我有一个JTabbedPane作为内容的JFrame 。 JTabbedPane依次存在其他几个面板。 我正在考虑从哪里获取我需要的所有东西。 我将为Frame创build一个单独的类,为JTabbedPane另一个类,并为每个将要添加到JTabbedPane新Panel创build一个新类。 东西沿线 public class Fetcher { public Fetcher(){ JFrame frame = new theFrameClass(); // theFrameClass extends from JFrame JTabbedPane tabbedpane = new theTabbedPaneClass();// theTabbedPaneClass extends from JTabbedPane JPanel tab1 = new firstTabClass(); // firstTabClass extends from JPanel JPanel tab2 = new secondTabClass(); // etc… tabbedpane.add(tab1); tabbedpane.add(tab2); frame.add(tabbedpane); } } […]

Java的Paint方法出现问题,可笑的刷新速度

我正在开发R-Type的一个非常简单的版本作为大学的工作,但尽pipe它的工作,手艺速度是很慢,所以运动是丑陋和笨拙。 我用刷新的方法刷新屏幕,还有其他的方法或方法最好吗? 运动video 在主面板上绘制方法 @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.drawImage(fondo, 0, 0,1200,600,this); pj.paint(g2); g2D=g2; } PJ的油漆方法 public void paint(Graphics2D g) { g.drawImage(imagen,x,y,this); } PJ的移动方法 public void move (KeyEvent e) { int dx = 0; int dy = 0; int code = e.getKeyCode(); switch (code) { case […]

添加JLabel与图像到JList显示所有的图像

这是我的代码。 它不会在框架中显示图像,而是显示一些文字。 任何人都请告诉我,我应该在代码中做出什么样的改变,以便我可以在一个框架中显示图像? import java.awt.Component; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.DefaultListModel; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; public class ListView { public static void main(String[] args) throws IOException { JFrame frame=new JFrame(); frame.setSize(500,500); JLabel lbl[] = new JLabel[10]; DefaultListModel listModel; ImageIcon[] […]

颜色衰落algorithm?

我创build了一些自定义的Swing组件,我想从一种颜色淡入到另一种颜色。 目前,我正在从RGB转换到HSB,然后通过色相值递增,并在绘画前转换回RGB,工作很好。 然而,这循环所有的颜色(即试图从黄色,橙色,红色等从蓝色到绿色的循环渐变)。 是否有一个体面的algorithm/方法直接从一种颜色淡入到另一种颜色? 编辑:我已经有更新通过摆动计时器(我试图避开像瘟疫线程触摸组件)。 感谢您的build议,今天晚上我会去的,谢谢!

设置自定义字体

我试图设置一个自定义字体(bilboregular.ttf)2 jLabels在我的程序字体不是被成功加载。 这里是主要的方法调用: //this should work if the build is in a jar file, otherwise it'll try to load it directly from the file path (i'm running in netbeans) if (!setFonts("resources/bilboregular.ttf")) { System.out.println("=================FAILED FIRST OPTION"); // <<<<<<<< This is being displayed if(!setFonts(System.getProperty("user.dir")+"/src/resources/bilboregular.ttf")){ System.out.println("=================FAILED SECOND OPTION"); // <<< This is not being displayed } } 这是另一种方法: […]

使用Swingselect一个文件窗格

我正在Swing中编写一个GUI,我想在主窗口中执行一个文件select器,如下图所示: 虽然似乎有很多关于如何编写popup文件select器的教程,但是我没有看到关于如何在摆动中完成这种types的select器的信息。 也很抱歉,如果这之前已经问过,我做了很多的search周围,无法find其他东西。

JButton()只在鼠标hover时工作

import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.imageio.*; import java.lang.*; import java.io.*; import javax.swing.*; public class MainClass extends Component{ private Image bg; private ImageIcon newgame; private ImageIcon quit; private ImageIcon options; private JButton bquit; private JButton boptions; private JButton bnewgame; private static Container pane; //Container public void loadImage() { try { bg=ImageIO.read(new File("bg1.png")); } catch […]

使用计时器对JPanel(滑入)进行animation处理

我正在尝试使用我创build的这个类从侧面创build一个JPanel幻灯片: public class AnimationClass { private int i; private int y; private JPanel panel; private int xTo; private Timer timer; private int xFrom; synchronized void slidePanelInFromRight(JPanel panelInput, int xFromInput, int xToInput, int yInput, int width, int height) { this.panel = panelInput; this.xFrom = xFromInput; this.xTo = xToInput; this.y = yInput; panel.setSize(width, height); timer = new […]

打印一个大的Swing组件

我有一个JScrollPane中的自定义表格的Swing窗体(它只是一个JPanel,而不是一个JTable子类),我试图让它打印。 如果我只是把整个框架发送到打印机,滚动窗格切断,如果我调整框架的大小,滚动窗格的内容的大小,某种内部障碍停止JFrame成为超过1100像素高。 另一种方法是创build对话框的内容窗格而不将其附加到根JFrame上,因为在这种情况下,JPanel的大小不受限制。 但是为了让组件自己放置并调整到适当的大小,我似乎需要使面板可显示,这意味着至less将其添加到JFrame中并调用JFrame.pack(),但是1100像素限制回来。 这是我打印组件的代码: public static void print(final Component comp) { final float SCALE = .5f; PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(new Printable() { public int print(Graphics g, PageFormat pf, int page) throws PrinterException { if (page * pf.getImageableHeight() >= SCALE * comp.getHeight()) return NO_SUCH_PAGE; ((Graphics2D)g).translate(pf.getImageableX(), pf.getImageableY() – page * pf.getImageableHeight()); ((Graphics2D)g).scale(SCALE, SCALE); comp.printAll(g); return […]