Tag: jpanel

以编程方式在JFrame中交换两个JPanel

我正在努力完成上述function,但收效甚微。 我正在使用带有2列和2行的GridLayout来向用户显示类似拼图的游戏,其中有4个(200×200像素)JPanels(3个彩色,1个默认bgColor),它们填充整个contentPane。 如果面板位于灰色面板旁边,则单击彩色面板将在评估中解析。 如果是这样,他们应该交换。 我完成了最后一步的每一步,他们交换了。 这是代码: public class MainClass extends JFrame { //Generated private static final long serialVersionUID = 4710628273679698058L; private SpecialPanel redPanel; private SpecialPanel greenPanel; private SpecialPanel yellowPanel; private SpecialPanel grayPanel; public MainClass() { super(“Puzzle”); initPanels(); setSize(410, 410); setLayout(new GridLayout(2, 2)); this.add(redPanel); this.add(greenPanel); this.add(grayPanel); this.add(yellowPanel); } private void initPanels() { redPanel = new SpecialPanel(); […]

动态更新LookAndFeel值

我希望能够动态更新我的Swing GUI的LookAndFeel属性。 在这种情况下,我有一个简单的Swing / Awt游戏,运行起初是Nimbus LookAndFeel 。 在启动后的不同时刻,我想改变(让我们说)一个细节:我的应用程序的背景颜色。 我可以通过这样做来改变背景颜色: for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if (“Nimbus”.equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); UIManager.getLookAndFeelDefaults().put(“Panel.background”, Color.RED); SwingUtilities.updateComponentTreeUI(SomeGame.this); break; } } 这“工作”,因为应用程序的背景颜色正确更改,程序不会崩溃。 但是在命令行上我得到错误: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException at javax.swing.plaf.synth.SynthLookAndFeel.paintRegion(SynthLookAndFeel.java:371) at javax.swing.plaf.synth.SynthLookAndFeel.update(SynthLookAndFeel.java:335) 事实上,某些东西是空的,但我无法弄清楚它是什么或如何解决它。 必须有一些我不理解的东西。 我查看了有关在Nimbus中设置背景颜色以及在启动后覆盖LookAndFeel信息的其他StackOverflow问题。 当我调用getLookAndFeelDefaults() ,我还需要指定其余的默认值吗? Java 1.6和1.7之间的工作方式有变化吗?

Java Swing:从与JLayeredPane中的其他JPanel重叠的JPanel清除自定义绘图

我有一个JLayeredPane包含三个JPanels,其中两个重叠,我正在绘制形状。 重叠的两个JPanel中的一个需要将所有绘制的形状清除,而不会影响绘制到其下的JPanel的形状,从屏幕上消失。 目前我正在使用这样的东西: Graphics g = pane2.getGraphics(); g.clearRect (0, 0, 1000, 1000); 但这不仅清除了绘制到pane2的所有内容,还清除了下面的pane1。 所以我的问题是:有没有办法清除绘制到一个JPanel的所有内容而不影响任何绘制到JPanel下的内容?

使用JPanel绘制直线并获得点坐标

我现在完全失去了。 我在使用Java构建GUI方面没有太多工作,我一直在阅读关于swing和JPanel的所有内容,我认为我想做的事情是可能的,我只是没有弄清楚如何 。 我正在尝试构建一个GUI,您可以在某个绘图区域内绘制直线,我希望能够获得起点/终点坐标,以便使用这些点进行一些数学运算。 任何帮助将不胜感激!

调整JPanel的大小以准备打印而不将其从原始位置移除

在我的程序中,我经常需要打印各种JComponents(通常是JPanels),我喜欢它们是整页的。 我现在的方式是使用以下代码: g2d.scale(pf.getImageableWidth()/componentToPrint.getWidth(), pf.getImageableHeight()/componentToPrint.getHeight()); 但这通常会拉伸或以其他方式改变我想要打印的东西,我更喜欢做一些智能重新resize的东西,也许是一个function版本: componentToPrint.setSize(pf.ImageableWidth(), pf.ImageableHeight); 或者说将组件添加到新的JFrame然后设置帧大小(问题是组件不能同时存在于两个地方)。 我不在乎resize是否会使GUI的其余部分看起来很糟糕,只要它是可以轻松重置的东西。 有没有办法做到这一点?

如何将图像放在特定的JPanel中?

我最近正在尝试棋盘游戏,现在我正在制作Checkers棋盘游戏。 但是,我可以弄清楚如何在GridLayout的单元格中显示芯片。 每个单元都有自己的JPanel ,我通过FOR循环在2D数组中分配。 我需要在特定的JPanel中显示图像p1Chip ,它只是一个.png ,让我们说它的变量名称是board[2][3] ,而不会搞乱GridLayout 。 关于如何做到这一点的示例代码将是很好的,因为它将帮助我更好地理解。 我在互联网上搜索过但我找不到我需要的东西,或者至少找不到解释如何做的东西。 这是到目前为止的代码: package checkers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.Image; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import […]

使用JFileChooser将图像加载到JFrame中

我正在尝试编写一个代码,将使用JFileChooser选择的图像显示到另一个JFrame中。我尝试了下面的代码,但只得到以下错误。 Exception in thread “main” java.lang.NullPointerException at javax.swing.ImageIcon.(ImageIcon.java:228) at power.(fCGUI.java:53) at fCGUI.main(fCGUI.java:11) 这是代码: import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class fCGUI { public static void main(String []args) { power p=new power(); p.setVisible(true); } } class power extends JFrame { JFileChooser chooser; BufferedImage img; JButton button,button2; JFrame […]

获取点击JPanel的颜色?

我只想要一个方法来激活,如果点击的像素是白色的。 我该如何实现? 试图寻找一种在coord上返回颜色的方法,但我找不到一个。

如何禁用JPanel以使其无法在Java中更改大小

我在布局中有几个JPanels,每当我用鼠标手动更改JFrame的大小时,它会拉伸JPanels并使其看起来很乱。 有没有办法禁用它?

Java从内部JPanel返回ShowOptionDialog

我用了 JOptionPane.showOptionDialog(NULL, 新的MyPanel(), “import”, JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,new Object [] {},null); 因为我不想要OptionDialog提供的默认按钮,我在MyPanel中创建了我的按钮MyPanel extends JPanel所以现在我的问题是如何从ActionEvent触发的MyPanel关闭那个OptionDialog? 只要该对话框消失,我不关心返回值。 我意识到这可能不是最好的设计,但我已经做了很多次这样的事情,所以我更喜欢一个修复,尽可能少地改变结构。 谢谢!