Tag: layout manager

Java – CardLayout show()IllegalArgumentException

我有一个CardLayout show方法的问题 所以我宣布我的CardLayout并将其应用到我的JPanel CardLayout cl = new CardLayout(); panel.setLayout(cl); 然后我在CardLayout中添加了2个面板 cl.addLayoutComponent(panel, “menuScreen”); cl.addLayoutComponent(panel1, “gameScreen”); 然后我有一个JButton,当点击时,我显示gameScreen public void mouseClicked(MouseEvent e) { if(e.getSource() == (startGame)) scenechange.show(panel,”gameScreen”); } 唯一的问题是它没有进入我的gameScreen。 它给了我一个llegalArgumentException。 它说“线程中的exception”AWT-EventQueue-0“java.lang.IllegalArgumentException:CardLayout的错误父级”。 提前致谢

Java Swing JList,不能设置最小宽度

尝试简单地创建具有指定可见行数但具有最小宽度的JList。 似乎“setMinimumSize()”没有做任何事情…… import java.awt.*; import java.awt.event.*; import javax.swing.*; public class UserInterface { final static private int HEIGHT = 400; final static private int WIDTH = 650; public static void main(String[] args) { JPanel content = new JPanel(); String[] entries = { “Entry 1”, “Entry 2”, “Entry 3”, “Entry 4”, “Entry 5”, “Entry 6” }; DefaultListModel […]

试图获得一个swing菜单来使用GridBagLayout

我正在尝试构建一个带有两个垂直列的应用程序,锚定在左侧,右侧有一个大框。 我可以让第一个菜单坚持到右边,但由于某种原因,第二个菜单不会出现在第一个菜单旁边。 我已经阅读了有关额外空间被推向最后一列和最后一行(右侧)的内容。 我该怎么处理呢? PS我正在使用网格袋布局。 这是我得到的: 主UserView类:package gui; import actions.DepositAddButtonAction; import actions.DepositButtonAction; import javax.swing.*; import javax.swing.border.Border; import java.awt.*; public class UserView { public JFrame frame; private JPanel menuPanel; private JPanel secondMenuPanel; private JPanel contentPanel; private JButton depositButton; private JButton creditButton; private JButton exchangeButton; private JButton simulationButton; private JButton informationButton; private JLabel menuLabel; private GridBagLayout gridBagLayout; […]

Java制作Connect Four游戏面板

我正在为计算机科学课程制作Connect Four作为我的CPT。 到目前为止,我已经创建了面板,但我遇到了问题。 我要做的是在电路板上每个插槽制作一个面板,并用连接四板的空插槽填充它,当每个点组合时,它看起来像一个完整的连接四板。 基本上我是在我的主面板上添加一个网格布局面板,并用包含插槽图片的多个其他面板填充网格面板。 我已经创建了一个子程序来完成这项工作。 但是当我运行我的程序时,中间只有一个插槽,而不是应该显示的42个(电路板是7乘6)。 我现在的目标是为我的子程序创建42个JPanel并将它们放入我创建的网格面板中。 我知道这可能没有多大意义,但希望代码可以帮助您了解更多。 谢谢你的帮助。\ PS emptyBox.jpg基本上是连接四板上空插槽的图片。 我想用这些填充面板,所以它看起来像一个完整的板。 这是迄今为止的代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; public class ConnectFour { static JFrame mainWindow; static JButton firstArrow = new JButton(“Drop”); static JButton secondArrow = new JButton(“Drop”); static JButton thirdArrow = new JButton(“Drop”); static JButton fourthArrow = new JButton(“Drop”); […]

如何在JFrame中的JPanel中添加ChartPanel

我一直试图这样做.. JFreeChart chart = createChart(createDataset()); jPanel1 = new ChartPanel(chart, false); 这个JPanel1在JFrame里面(它是一个Netbeans的JFrameforms,所以我有一些标签和textAreas) jPanel1固定在Netbeans的设计者里面…在做了其他数据工作之后的某个地方我现在想要一个关于数据的所有文本的数据图表。 我尝试了其他解决方案,比如将JFreeChart转换为jPanel。 也 JFreeChart chart = createChart(createDataset()); JChartPanel P=new ChartPanel(chart,false); jPanel1.add(P); 实际代码: public class NucleotideComposition extends JFrame{ public NucleotideComposition(String filename) { DNA dna=new DNA(filename); int count moleculeName.setText(dna.getSeq_name()); Length.setText(Integer.toString(count = dna.length())); JFreeChart chart = createChart(createDataset(dna.countA(),dna.countT,dna.Countc,dna.countG)); jPanel1 = new ChartPanel(chart, false); } private static PieDataset createDataset(int […]

如何在JPanel,JFrame中移动JButtons和JLabels的位置

我正在创建一个简单的彩票作为练习,我是Java的初学者。 除了一件事,我几乎完成了我想要的一切:将不同的文本和按钮移动到我希望它们的位置。 这是在Photoshop中编辑的图片,描述了我希望它如何: 按“播放”按钮后,彩票目前看起来像这样: (正如您所看到的那样,按钮会向右移动,以便为按钮左侧的文本留出空间) 我想要实现的是按钮位置永不移动,并将文本放在按钮下。 我还想添加一个表格来描述您的潜在奖金以及会给您多少奖金的数字。 代码由2个Java类组成,请记住我是初学者,如果你看到任何简单的改进空间(我知道必须有很多),如果你给我一个提示或任何东西,我会很高兴:) 所以这是代码: LotteryMain.Java public class LotteryMain { /** **@author Samy */ public static void main(String[] args) { TheLottery n = new TheLottery(); n.TheLottery(); } } TheLottery.java import java.awt.Color; import java.awt.FlowLayout; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingConstants; […]

MigLayout列约束

我正在尝试开发这样的应用程序布局: * +——————+——–+ * | | | * | | | * | | | * | 70% | 30% | * | | | * | | | * | | | * | | | * | | | * +——————+——–+ 为此,我正在使用MigLayout。 根据这个备忘单 ,设置柱重量我们使用[weight] 。 但是,它不能以某种方式工作。 看看我的代码: package com.test; import java.awt.EventQueue; import javax.swing.JFrame; […]

绝对定位(无布局管理器)与MiGlayout中的绝对定位

当使用MiGlayout中的绝对定位作为布局管理器而不使用布局管理器(将布局管理器设置为空)时,最终应用程序结果是否会在不同平台和分辨率等方面相同? MiGlayout解决方案中的绝对定位与无布局管理器解决方案之间是否存在差异?

如何支持缩放JScrollPane中显示的视图以避免将JScrollBars显示到最小尺寸?

我想要实现的行为是默认情况下以1:1的比例显示视图。 如果其容器变大(由用户动态调整父JFrame的大小),则应缩放视图以适应更大的区域; 如果缩小,视图应缩放以适应较小的区域 – 达到极限。 当小于最小尺寸时,滚动条应与视口一起出现,以支持在最小比例显示的视图周围导航。 我现在有一个运行不良的实现,使用JScrollPane和ComponentListener来确定何时发生resize。 基于新大小,设置新的比例因子以绘制视图以适合(最小比例),设置视图的preferredSize并调用revalidate()。 问题是这会导致“抖动”显示; 当调整超过应用新比例的点以避免显示滚动条时,滚动条会出现,然后消失。 我相信这是因为我的方法是react native的,而不是预测性的。 也就是说,LayoutManager仅查看视图的preferredSize并基于此执行布局。 我正在侦听JScrollPane的大小调整,当它只是太小时才更改视图的preferredSize,然后通过调用revalidate()使容器再次布局。 至少这是我理解它的方式。 我一直在审查JScrollPane,JViewport及其相应的LayoutManagers的源代码。 在这一点上,我正在考虑将一个或多个子类化为更好(预测,导致更平滑的大小调整)实现。这似乎是其他人必须实现的行为。是否有另一种方法来使用现有的Container / LayoutManagers /方法来执行这没有子类化并冒着跨越不同LnF或平台的意外行为的风险? 编辑:我已经攻击了ScrollPaneLayout的原型子类。 它在添加滚动条之前检查视图的最小大小。 这是有效的(因为滚动条在视口小于视图的最小大小之前不会出现,而不是在视口小于视图的首选大小时显示滚动条的原始行为)但是当显示滚动条时,视图会认为它仍然是首选尺寸,而不是最小尺寸。 我也可能不得不破解ViewportLayout类,但这很快就会成为我怀疑会强大的东西。 编辑: 我回到基础并再次尝试了这些建议,并取得了成功。 我尝试重载ScrollPaneLayout和ViewportLayout的默认行为,以及它们之间的交互不是正确的方向。 在我第一次尝试之后,我确信在LayoutManagers完成他们的工作之后,没有办法避免我的“反应”方法的闪烁和不稳定性来修复不正确的大小。 幸运的是,有一种方法可以在没有子类化LayoutManager的情况下完成这项工作 – 如上所述,它是通过实现Scrollable接口(我之前已经正确完成,但没有进行其他更改以使其工作)。 诀窍的确是实现getScrollableTracksViewport(),使其根据视口大小返回true / false。 除了我正在做的其他计算之外,我还没有做的是更新视图的preferredSize。 这是至关重要的一步。 (请注意,我还依赖于侦听ComponentListener.componentResized()通知来触发正确设置返回值所需的计算。function代码如下所示,即可获得帮助。 @SuppressWarnings(“serial”) class ScalingScreenPanel extends JScrollPane { private static final Dimension PREFERRED_SIZE = new Dimension(800,200); private static ScalingScreen sScreen; […]

如何在JFrame中设置对象的位置?

我有标签和JButtons我想在JFrame中定义位置。 import java.awt.*; import java.net.InetAddress; import java.net.UnknownHostException; import javax.swing.*; public class GuiFrame extends JFrame { public static void main(String[] args) throws UnknownHostException { JFrame f = new JFrame(“This is a test”); f.setSize(400, 150); JRadioButton ButtonServer = new JRadioButton(“Server”); JRadioButton ButtonClient = new JRadioButton(“Client”); InetAddress thisIp = InetAddress.getLocalHost(); Label lip = new Label(“Your IP is : […]