Tag: layout manager

GridBagLayout不起作用

this.rootComponent.setLayout(new GridBagLayout()); GridBagConstraints gbc=new GridBagConstraints(); //gbc.gridwidth=2; gbc.gridx=0; gbc.gridy=0; gbc.gridwidth=8; gbc.anchor=GridBagConstraints.FIRST_LINE_START; this.rootComponent.add(new JLabel(“Test label 1”),gbc); gbc.gridx=8; gbc.gridy=12; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.anchor=GridBagConstraints.FIRST_LINE_START; this.rootComponent.add(new JLabel(“Test label”),gbc); 想要像这样格式化。 灰色部分显示jpanel部分。 最初我想正确布局前2个jpanel。 这是行不通的。 怎么解决?

GridBagLayout无法正确布局

我是GridBagLayout的新手,但我尝试使用我能找到的标准约定,即在一张网格纸上绘制我的想法,然后尝试将网格值转换为gridbag … 我的目标是制作如下所示的布局: 它目前看起来像这样: 任何想法为什么? 如果你想到一个左上角为0,0的网格,我正在寻找的确切尺寸 目标图片中面板中的红色:从第0列开始,跨越10列,高度为1行 对于黑色面板:从第0列开始,第1行,跨越10列,高度为20行 对于蓝色面板:从第0列开始,第21行,跨越10列,高度为1 对于绿色列:从第10列开始,第0行,跨度16列,高度为7 对于紫色列:从第10列开始,第7行,跨度16列,高度为16 这是我的源代码: GBC是一个扩展GridBagConstraints的辅助类,使用的构造函数是 GBC(int startingX,int startingY,int width,int height) /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.awt.Color; import java.awt.EventQueue; import java.awt.GridBagLayout; import java.awt.Rectangle; import javax.swing.JApplet; import javax.swing.JLabel; import javax.swing.JPanel; public class Demo extends […]

如何使用ImageIcon制作可拖动的组件

我正在尝试为国际象棋游戏构建用户界面。 我使用了填充JLabel的GridBagLayout ,棋子是JLabel的 ImageIcons 。 现在我想通过在板上拖动它来移动它们。 有没有办法用ImageIcons做到这一点? 或者有更好的方法来解决问题吗? 编辑:这是一个示例代码。 你可以注意到你可以移动iconImage,但它不会用鼠标“拖动”。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.HashMap; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class MainDebug extends JFrame implements MouseListener { private JPanel BoardPanel; […]

什么布局接受百分比而不是摆动中的值?

我需要根据他们所需的可视空间百分比来创建框架内容。 例如,面板20%,面板2面板180%。 这种布局管理有哪些布局?

Java Swing JFrame布局

我刚刚编写了一个简单的代码,我希望在主框架上显示一个文本字段和一个按钮,但是在运行之后,我看到的是文本字段。 如果我在文本字段后面写了按钮的代码,那么只显示按钮。 知道为什么吗? JFrame mainframe=new JFrame(); mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainframe.setBounds(0,0,200,200); JButton jb=new JButton(); jb.setText(“Leech”); mainframe.add(jb); JTextField link=new JTextField(50); mainframe.add(link); mainframe.pack(); mainframe.setVisible(true);

CardLayout与手动添加/删除JPanels有什么特别之处?

在StackOverflow上有很多次用户问这样的问题…… 我有一个主要的JPanel ,包含一个孩子JPanel 。 当用户单击按钮时,子JPanel应更改为其他JPanel 。 我怎样才能做到这一点。 通常,用户实际上已尝试实现此问题,但无法使其正常工作。 每当我回答这个问题时,我都会告诉他们做这样的事情(简单地说)…… JPanel myFrame = new JPanel(); myFrame.remove(oldPanel); myFrame.add(newPanel); 我认为这是一个非常合理的答案,我个人在我自己的许多Java项目中都没有使用过这个问题。 但是,我总是得到我的回答,每个人都只是说“使用CardLayout ”。 所以我的问题是,为什么每个人都对CardLayout如此着迷,以至于我的答案值得投票? 我为什么要选择使用CardLayout而不是使用上面的代码添加/删除面板? 作为进一步的问题,您是否仍然建议使用具有动态JPanel的接口的CardLayout 。 例如,我的大多数程序都实现了一个自定义插件框架,其中可能有数百个JPanels ,但我只是加载并显示实际需要的面板。 对于程序的正常使用,大多数面板实际上永远不会被加载或需要。 对于这种类型的场景,我的编码方法是否是最好的解决方案,因为据我所知, CardLayout要求我实际创建所有的JPanels即使大多数都不会被使用?

Java – 具有水平滚动的垂直“FlowLayout”

正如标题中所描述的那样,我一直试图设置一种带有水平滚动的垂直流布局。 布局中的组件将是JLabel。 让我画一幅画: +————————-+ <— window |Label1 Label4 Label7| |Label2 Label5 Label8| <— labels |Label3 Label6 Label9| |========| <— scrollbar +————————-+ 同一窗口,垂直扩展 +————————–+ <— window |Label1 Label5 Label9 | |Label2 Label6 Label10| <— labels |Label3 Label7 Label11| |Label4 Label8 Label12| |=====| <— scrollbar +————————–+ 因此,标签将填充可用的垂直空间,然后创建一个新列。 一旦可用的水平空间耗尽,就会出现水平滚动条。 通常不应出现垂直滚动条; 但是,如果窗口的垂直高度非常小,那么有一个垂直滚动条会很不错。 任何帮助是极大的赞赏。 我是Java的新手,所以任何额外的解释都会很精彩。 谢谢! 编辑: 根据以下回复,我现在正在使用: http : […]

.setBounds不适用于JLabel和JButton

我试图在我的GUI上更改JLabel和JButton的位置。 即使我尝试使用.setBounds来改变它们的位置; 它们都只出现在屏幕的顶部中央。 import java.awt.color.*; import java.awt.font.*; import java.awt.Graphics; import java.awt.Image; import javax.swing.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import javax.swing.UIManager.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class yo implements MouseListener { Image image; JButton button = new JButton(“Wassup”); JFrame frame = new JFrame(); JLabel heloo = new JLabel(“yo”); JPanel panel = new JPanel() { @Override […]

Jframe执行时尺寸不正确,有什么原因吗?

我正在制作一个游戏,但每当我运行第二个jFrame时,我必须调整它以便为第二个jFrame获得正确的大小,任何人都知道为什么? 这是第一个jFrame类中打开第二个方法的方法: private void playButtonMouseClicked(java.awt.event.MouseEvent evt) { if (playerOneNameText.getText().equals(“”)) { } if (playerTwoNameText.getText().equals(“”)) { } else{ pOneName = playerOneNameText.getText(); pTwoName = playerTwoNameText.getText(); ChessBoardUI class1 = new ChessBoardUI(); // Creating object of Class1 class1.setVisible(true); this.setVisible(false); } } 这是第二个jFrame类,我必须resize才能使ge tit正确: package chess; public class ChessBoardUI extends javax.swing.JFrame { public ChessBoardUI() { initComponents(); } /** * This method […]

Java CardLayout主菜单问题

好的,所以即时通讯工作在java中称为8位嵌合体。 我现在在主菜单上工作但是当我使用卡片布局时,窗口由于某种原因不会打开。 这是一些代码。 import javax.swing.*; import java.awt.*; public class MainScreen extends JFrame{ String Title = “MainMenu”; MainMenuComp MMC = new MainMenuComp(); BreedingGround BGR = new BreedingGround(); public MainScreen() { setTitle(“8-bit Chimera “+Title); setSize(800,600); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); add(MMC); add(BGR); } public static void main(String[] args){ new MainScreen(); } } 那是主窗口 import javax.swing.*; import java.awt.*; import java.awt.event.*; […]