相关疑难解决方法(0)

调整JPanel大小后,组件消失

我试图创建JPanel与可拖动的十字架,鼠标点击后出现.一切正常,但当我调整JPanel的大小时,十字架消失了.我试图覆盖JPanel中的paintComponent方法,但是所有的十字都在坐标(0,0)处.我该如何解决?

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CrossPanel extends JPanel implements MouseListener {

private int orderOfCross = 0;
private ArrayList<Cross> crosses;
private int defaultSizeOfCrosses = 10;

CrossPanel() {
    setOpaque(false);
    addMouseListener(this);
    crosses = new ArrayList<Cross>();
}

@Override
public void mouseClicked(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    Cross cross = new Cross(orderOfCross++, defaultSizeOfCrosses);
    crosses.add(cross);
    cross.setLocation(x - defaultSizeOfCrosses, y - defaultSizeOfCrosses);
    add(cross);
    repaint();
}

@Override …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel paintcomponent

3
推荐指数
1
解决办法
1790
查看次数

如何在 Java GUI 中使用鼠标光标拖动图像?

// 我的代码调用要放置在 JPanel 上的目录中的 n 个图像

 public void imageAdder(int n, String name){
    BufferedImage myPic = null;
    for (int i = 0; i <= n; i++){
        try {
        myPic = ImageIO.read(new File("Images/" + name + i + ".jpg"));
        } catch (Exception e){
        System.out.println("no file man cmon");
        }
        JLabel picLabel = new JLabel(new ImageIcon(myPic));
      //  picLabel.setBounds(mouseX, mouseY, 100, 50);
      //  picLabel.addMouseMotionListener(this);
      //  picLabel.addMouseListener(this);
        canvas.add(picLabel);
    }}
Run Code Online (Sandbox Code Playgroud)

我阅读了类 DragSource 以及如何有一种方法可以拖动图像类型的东西,但我不确定这是否适用于我的代码。如果我想用鼠标自由拖动图像怎么办?

java user-interface image drag imageicon

3
推荐指数
1
解决办法
3604
查看次数

空白部分阻止JFrame内部的绝对定位图形JPanel

我正在尝试通过制作拼图程序来提高我对Java的理解,特别是Java GUI.目前,用户选择图像,该图像被切割成指定数量的片段.这些碎片被随机地绘制到屏幕上,但它们似乎被其他部分的空白部分覆盖,并不是所有部分都显示出来,但我可以打印出所有坐标.我使用绝对定位,因为LayoutManager似乎不起作用.我简单地试过了layeredPanes,但是他们让我困惑,似乎没有解决问题.我真的很感激一些帮助.
以下是2个相关课程:

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;

public class PuzzlePieceDriver extends JFrame
{
  private static Dimension SCREENSIZE = Toolkit.getDefaultToolkit().getScreenSize();
  private static final int HEIGHT = SCREENSIZE.height;
  private static final int WIDTH = SCREENSIZE.width;

  public static int MY_WIDTH;
  public static int MY_HEIGHT;

  private static BufferedImage image;


  private int xPieces = PuzzleMagicDriver.getXPieces();
  private int yPieces = PuzzleMagicDriver.getYPieces();

  private PuzzlePiece[] puzzle = new PuzzlePiece[xPieces*yPieces];

  public Container pane = this.getContentPane();
  private JLayeredPane layeredPane = new JLayeredPane();


  public PuzzlePieceDriver(ImageIcon myPuzzleImage)
  { …
Run Code Online (Sandbox Code Playgroud)

java graphics css-position jpanel jframe

2
推荐指数
1
解决办法
2608
查看次数

Java布局比例:创建可伸缩的方形面板

我正在制作一个GUI组件来代表窗口中的棋盘.通常它将是一个8x8正方形的网格,虽然有些变体需要10x8板等.第一步是制作一个包含8x8组件网格的面板.

该类Board扩展JPanel并使用a GridLayout来模拟8x8组件的网格.为了完成某些事情,这些只是Square扩展的类JButton.麻烦的是他们不是正方形!

Board已添加到新鲜实例化JFrame,包装和呈现在屏幕上.当然,现在电路板在用户调整大小时占用整个帧.网格与板一起缩放,这将方块扭曲成矩形.

这并非完全不受欢迎的行为.我希望电路板能够与框架一起扩展.但是,我想确保方块始终保持正方形.电路板可以是矩形(10x8),但应保持固定比例.

我如何获得正方形?

java layout user-interface

2
推荐指数
1
解决办法
6150
查看次数

无法在 JPanel 上移动 JLabel

好的,所以我正在制作一个垄断游戏。到目前为止JFrame,我有一个,JPanel作为董事会。我已经加载了所有必要的图像。我创建了一个Player扩展的对象JLabel,代表棋盘上的玩家。

我正在尝试设置(希望在棋盘周围移动棋子)Player对象(即 a JLabel)在棋盘上(即 a JPanel)的位置。我尝试了.setLocation方法,.setBounds方法。

出于某种原因,无论我做什么,Player对象都只会出现在JPanel. 我想知道如何移动Player板上的物体。

JFrame代码(我尝试将 移动JLabel到构造函数的底部):

   package com.Game.Monopoly;

    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.Timer;

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.LayoutManager;
    import java.awt.Point;
    import java.awt.SystemColor;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.IOException;

    import …
Run Code Online (Sandbox Code Playgroud)

java layout swing

0
推荐指数
1
解决办法
1670
查看次数