Tag: jpanel

addKeyListener()不适用于JPanel

我正在尝试制作游戏引擎。 我已经制作了Game类,但错误存在于KeyBoard类中。 这里我留下一些代码。 类::游戏 package transfer2pc.co.cc.game.tileengine; import java.awt.Graphics; import java.util.HashMap; import javax.swing.JPanel; import transfer2pc.co.cc.game.tileengine.input.KeyBoard; public abstract class Game extends JPanel implements Runnable { /** * */ private static final long serialVersionUID = 640206679500196209L; HashMap maps = null; KeyBoard keyBoard = null; public Game(){ super(); keyBoard = new KeyBoard(this); setKeyBoard(keyBoard); Thread th = new Thread(this); th.start(); […]

如何通过单击JButton添加JPanel?

我正在尝试创建一个小的GUI,它有2个JButton和2个JPanel,每个都有一些绘图动画。 默认情况下,它必须显示第一个JPanel,并通过单击第二个JButton我想看到我的第二个JPanel。 所以:我创建了JFrame,Panel1和Panel2,在那里我绘制了我的动画,创建了Button1和Button2并添加了ActionListeners。 我还有MainPanel,它有一个字段变量i。 通过更改此“i”我的构造函数将MainPanel添加到Panel1(默认)或Panel2(通过单击JButton2我更改i)。 比我把这个MainPanel添加到我的框架。 所以我的问题:在类MainPanel中我有refreshMe方法,我应该在那里写什么才能让我的GUI正常工作? 谢谢。 这是我的代码: import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class GuiTest { public static void main(String[] args) { JFrame f = new JFrame(); MainPanel myPanel = new MainPanel(); f.add(myPanel); Button1 button1 = new Button1(); Button2 button2 = new Button2(); myPanel.add(button1); […]

绘制一个在下一个油漆中不会消失的矩形

我试图创建一个绘制矩形的JPanel。 小组需要绘制很多矩形,但它们不会移动。 我的问题的一个解决方案是创建一个包含我已经创建的所有矩形的列表,并在每次调用“Paint”时绘制它们。 但是有很多矩形,它会减慢计算机的速度。 我也尝试使用重绘(x,y,高度,宽度)来掠夺新矩形的空间,但它不起作用。 (JPanel不断擦除以前的矩形。)在排序中,我需要绘制每个油漆都不会消失的矩形。 或者是一种不会擦除先前绘制的绘画方法,或者不会绘制背景。 这是我的JPanel类的一部分: class MyPanel extends JPanel{ private int x, y, size; private Color c; public void DrawRect(int x, int y, int size, Color c){ this.x = x; this.y = y; this.size = size; this.c = c; repaint(); } @Override public void paint(Graphics g) { g.setColor(c); g.fillRect(x, y, size, size); […]

如何在JPanel中设置背景图片

你好我使用JPanel作为我的框架的容器然后我真的想在我的面板中使用背景图片我真的需要帮助这是我的代码到目前为止。 这是更新,请在这里查看我的代码 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class imagebut extends JFrame { public static void main(String args []) { imagebut w = new imagebut(); w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); w.setSize(300,300); w.setVisible(true); } public imagebut() { setLayout(null); // 🙂 PicPanel mainPanel = new PicPanel(“picturename.jpg”); mainPanel.setBounds(0,0,500,500); add(mainPanel); } class PicPanel extends JPanel{ private BufferedImage image; private int w,h; public […]

JFrame中只显示一个组件

作为我加密项目的改进,我决定制作一个小GUI。 但是,当我运行程序时,只有顶部元素出现在屏幕上,它似乎模糊了其他元素,尽管我无法检查。 有谁知道为什么? 除了e()和d()之外,下面是我的全部代码,因为它们只是加密一个字符串而与GUI无关。 我还希望能够在不编辑加密的情况下尽可能加快速度,以使其尽可能好。 @SuppressWarnings(“serial”) public class EncDecExample extends JFrame implements ActionListener { final static JPanel top = new JPanel(); final static JPanel mid = new JPanel(); final static JPanel bot = new JPanel(); final static JTextField in = new JTextField(10); final static JTextField out = new JTextField(10); final static JButton enc = new […]

在JPanel上绘制矩形

我想在JPanel上画一个重复。 能够使用以下代码绘制。 public class DrawingColor extends JFrame { public static void main(String[] args) { DrawingColor d = new DrawingColor(); } public DrawingColor() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().add(new MyComponent()); setSize(400,400); setVisible(true); } public class MyComponent extends JComponent { @Override public void paint(Graphics g) { int height = 200; int width = 120; g.setColor(Color.red); g.drawRect(10, 10, height, width); g.setColor(Color.gray); […]

将图像设置为JPanel背景的最简单方法

如何在不创建新类或方法的情况下将背景图像添加到JPanel,只需将其与JPanel的其余属性一起插入即可? 我试图使用图像设置JPanel的背景,但是,我发现的每个示例似乎都建议使用自己的类扩展面板。 我一直在寻找一种方法来简单地添加图像,而无需创建一个全新的类并在同一个方法中(尝试保持组织和简单)。 以下是设置JPanel的方法示例: public static JPanel drawGamePanel(){ //Create game panel and attributes JPanel gamePanel = new JPanel(); Image background = Toolkit.getDefaultToolkit().createImage(“Background.png”); gamePanel.drawImage(background, 0, 0, null); //Set Return return gamePanel; }

不能将Swing组件添加到多个容器中?

我正在尝试(测试别的东西)将一个JButton引用添加到两个JPanels进行测试,它从添加到的第一个面板中消失了! 那么,不能将Swing组件添加到多个容器中吗? 先谢谢你。

JLabel – 将更长的文本显示为多行?

所以说我想要在JLabel显示一条非常长的行。 我该怎么做? 目前,更长的线路出现了: 我必须调整窗口大小以查看完整的文本。 当文本几乎达到我的JFrame的宽度时,我怎样才能使它有换行符? 我不确定这里是否需要任何代码才能回答这个问题,但仍然: 我的框架属性: frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(450, 400)); frame.setLocation(new Point(400, 300)); frame.setLayout(new BorderLayout()); 我要修改的标签: question = new JLabel(“Question:”); question.setFont(new Font(“Serif”, Font.BOLD, 15)); question.setHorizontalAlignment(JLabel.CENTER); 编辑:更多细节: 我正在从文件中读取行,然后显示它们。 线条的大小不固定,所以我不知道放在哪里。 编辑2: 我最终使用了JTextArea 。 private JTextArea textAreaProperties(JTextArea textArea) { textArea.setEditable(false); textArea.setCursor(null); textArea.setOpaque(false); textArea.setFocusable(false); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); return textArea; }