Tag: paintcomponent

拉伸JLabel文本

有没有办法使JLabel的文本伸展到100%的高度? 当组件尺寸改变时,我需要更新文本。 我看到了一些可以工作的解决scheme。 它涉及计算和设置字体大小,所以它看起来是正确的高度。 我也将不得不添加监听器,当高度变化,使其作出回应,我不知道我应该这样做。 我希望与布局经理有更好的解决scheme,但是找不到任何东西。 有任何想法吗?

将多个JComponent绘制到一个框架

我试图将多个汽车物体绘制在同一个窗口上,但看起来它们是互相覆盖的。 这是我在Car类中重写的paintComponent方法 public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setColor(wheelColor); g2.fill(leftWheel); g2.fill(rightWheel); g2.setColor(bodyColor); g2.fill(body); g2.fill(cab); } 在我的Viewer类中: JFrame f = new JFrame(); initializeFrame(f); Car x = new Car(100, 100); Car y = new Car(300, 300); f.add(x); f.add(y); 虽然坐标看起来不一样,但只有最后一辆车正在绘制。 有什么build议么? 谢谢

绘制一个半径为圆的圆点

我真的被困在如何去编程这个。 如何用Java绘制一个半径为圆的圆点? 我需要在一个带有半径的JFrame中绘制一个圆,并指向圆周。 我可以通过math计算如何find边缘点的坐标,但我似乎无法编程该圆。 我目前正在使用一个Ellipse2D方法,但似乎没有工作,不会返回一个半径,因为根据我的理解,它不会从中心绘制圆,而是从使用高度和宽度的起始坐标绘制。 我目前的代码是在一个单独的框架,但我需要将其添加到我现有的框架。 import java.awt.*; import javax.swing.*; import java.awt.geom.*; public class circle extends JFrame { public circle() { super("circle"); setSize(410, 435); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Panel sp = new Panel(); Container content = getContentPane(); content.add(sp); setContentPane(content); setVisible(true); } public static void main (String args[]){ circle sign = new circle(); } } class Panel extends JPanel […]

将一个背景图像添加到面板

我有一个JPanel ,我想添加一个图像作为它的背景。 我怎样才能做到这一点 ? frame = new JFrame("Some frame"); panel1 = new JPanel(); panel1.setBorder(new EmptyBorder(5, 5, 5, 5)); // NEED TO ADD AN IMAGE TO THIS PANEL panel1.setLayout(cardlayout); frame.getContentPane().add(panel1); frame.setLocationByPlatform(true); frame.setVisible(true); 我需要添加一个图像的panel ,我怎么能做到这一点? 更新1 panel1 = new JPanel() { private static final long serialVersionUID = 1L; @Override public void paintComponent(Graphics g) { g.drawImage(Toolkit.getDefaultToolkit().createImage("1.jpg"), 0, 0, […]

Swing中paint,paintComponent和paintComponents之间的区别

Java Swing中paint() , paintComponent()和paintComponents()之间的实际区别是什么? 我试图了解Oracle文档中的解释,但我不清楚。

线程与键绑定

我是新来的Java图形和线程,我试图做一个游戏(具体来说,庞)。 这个想法是,两个人可以在同一个键盘上玩(即有两个通过不同的键控制的桨)。 目前,双方球员不能同时移动他们的桨。 有没有解决这个问题? 是单独的线程的答案? 如果可能,我希望桨能够同时移动(至少看起来)。 更新:好像使用Set<Integer>来存储按下的键是最好的选择。 我已经这样做了(而且它的工作原理),但我想知道是否有任何代码不在事件调度线程(EDT),如果我需要使用SwingUtilities.invokeLater(); 。 这是必要的代码: private Set<Integer> keysDown = Collections.synchronizedSet(new HashSet<Integer>()); public void keyPressed(KeyEvent e) { keysDown.add(e.getKeyCode()); } public void keyReleased(KeyEvent e) { keysDown.remove(e.getKeyCode()); } public void updatePaddlePositions() { if (keysDown.contains(KeyEvent.VK_W)) paddleOne.move(-PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_S)) paddleOne.move(PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_UP)) paddleTwo.move(-PADDLE_MOVE_INCREMENT); if (keysDown.contains(KeyEvent.VK_DOWN)) paddleTwo.move(PADDLE_MOVE_INCREMENT); try { Thread.sleep(DELAY); } catch (InterruptedException e) { System.out.println("You […]