我试图创建一个JDialog框架,它将有一个背景图像和一个交互式JPanel。在这种情况下,JDialog将代表一个“战斗”领域,单位将能够被选择和移动。游戏是以太空为基础的,所以会有一个船的阵列列表,可能还有一个星球物体需要防御。
我已经能够重写paintComponent来绘制一个表示“行星”的粗糙圆圈,但无法获得要显示的背景JLabel图像。然后我可以显示背景JLabel,但看不到圆圈。理想情况下,我想用每个船类型的实际图像替换圆圈,并为行星唯一。如果有更好的方法来实现这一点,除了使用jDialog/jLayered/Customer JPanel之外,我还愿意使用其他方法。我已经在这上面工作了好几个小时了。
我创建了一个JDialog,添加了一个JLayeredPane,并在其中设置了一个JLabel作为后台。我编写了一个扩展JPanel的自定义类,该类将添加到JLabel上方的JLayeredPane,它为行星和单位绘制圆圈。
public class SectorPnl extends javax.swing.JPanel implements MouseInputListener, ActionListener {
private int circleY, circleX, circleRadius;
private Sector sector;
private Shape planetShape;
private Shape shipShape;
private Ship ship;
private Planet planet;
private Invasion inv;
private ArrayList<ShipType> shipBuild;
public SectorPnl(Sector sector, Invasion inv)
{
initComponents();
this.sector = sector;
this.inv = inv;
this.planet = sector.getPlanet();
shipBuild = new ArrayList();
Timer update = new Timer(28, this);
update.start();
if ( sector.hasPlanet() )
{
circleRadius = (int) sector.getPlanet().getPlanetRadius();
circleX = (int) sector.getPlanet().getPositionX();
circleY = (int) sector.getPlanet().getPositionY();
planetShape = new Ellipse2D.Double(circleX, circleY, circleRadius,
circleRadius);
}
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponents(g);
Graphics2D g2 = (Graphics2D) g;
if ( planetShape != null)
{
g2.setColor(Color.red);
g2.fill(planetShape);
g2.draw(planetShape);
}
if ( shipShape != null )
{
g2.setColor(Color.white);
g2.fill(shipShape);
g2.draw(shipShape);
}
}
下面是将其添加到JDialog的行:
sectorDlg.setTitle(sector.getName());
sectorDlg.setVisible(true);
sectorDlg.setSize(800,800);
SectorPnl sectorPnl = new SectorPnl(sector, inv);
sectorPnl.addMouseListener(sectorPnl);
sectorPnl.addMouseMotionListener(sectorPnl);
sectorLayer.setLayer(sectorPnl, 100);
sectorLayer.setBounds(0, 0, 800, 800);
JLabel可以同时显示图标和文本,但我认为必须指定图标和文本的相对位置。
ImageIcon icon = createImageIcon("images/middle.gif");
. . .
label1 = new JLabel("Image and Text",
icon,
JLabel.CENTER);
//Set the position of the text, relative to the icon:
label1.setVerticalTextPosition(JLabel.BOTTOM);
label1.setHorizontalTextPosition(JLabel.CENTER);
这是摘自Oracle的《如何使用标签》。
我不知道如果你尝试设置背景和前景色会发生什么。
我的问题是--如何创建自定义列表视图,而不仅仅是重复一个自定义视图,而是像在Instagram或其他应用程序中,列表包括其他视图,这看起来就像滚动视图和列表视图android其他视图一样,但Roman Guy说“在滚动视图中的列表视图是一种非常糟糕的方式”,我同意这一点,不要相信谷歌使用这种方式... 使用ListView或Recolyer View实现此功能的最佳方法是什么
问题内容: 我正在尝试建立一个简单的Java程序,该程序可以从其他多个图像(jpg)创建一个动画gif。谁能给我一个有关如何在Java中实现此目标的信息?我已经搜索过Google,但找不到任何真正有用的信息。 感谢你们! 问题答案: 这里有一个类的示例,该类从不同的图像创建动画的gif: 链接 编辑:链接似乎已死。 无论如何,为了清楚起见,这段代码是由Elliot Kroo完成的。 编辑2:感谢您
我看到过许多开发人员发布的问题(Android Studio将2.AAR合并为一个或其他),但我还没有看到一个明确的答复,使我能够创建一个包含一个或多个AAR或jar的AAR(我可以使用jar,因为我不需要共享任何资源;只需要共享类)。以下是我的图书馆项目的应用程序分级: 我读过关于传递依赖的文章,但我找不到一个可以帮助解决我的情况的示例实现。
我对pytest的一个命令行参数没有问题。 运行程序时: 我得到了预期的回应: 当我尝试多个参数时,我会遇到问题 _____________________________________设置测试应答器2时出错/usr/local/penguin/home/px09/p001/test-suite.py,第9行def测试应答器2(cmdopt2):未找到E夹具“cmdopt2” /usr/loca
让我知道如何完成它。 总共有3个街区。。1.标题2.导航3.主要内容。。 导航块应该是多帧的...每次你选择一个选项,它需要改变... 它必须更像一个菜单导航 导入随机导入wx 类TabPanel1(wx.面板): #---------------------------------------------------------------------- def init(自我,父): """"
我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!