我使用gridbaglayout来显示JLabel(缩略图数量)和一些缩略图,每当我使用gridbaglayout将缩略图添加到Jpanel时,它会显示在中心,忽略网格值。gridx值工作正常,但gridy值被完全忽略。。。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.*;
public class grid {
private JFrame frame = new JFrame();
private JLabel a = new JLabel("Welcome to PhotoAlbum55");
/**
* Create the frame.
*/
public grid() {
createAndShowGUI();
}
private void addComponentsToPane(Container pane) {
SpringLayout layout = new SpringLayout();
pane.setLayout(layout);
layout.putConstraint(SpringLayout.WEST, a, 60, SpringLayout.WEST, pane);
layout.putConstraint(SpringLayout.NORTH, a, 0, SpringLayout.NORTH, pane);
a.setFont(new Font("Segoe UI", Font.BOLD, 20));
pane.add(a);
JPanel photoPanel = new JPanel();
GridBagLayout gbl = new GridBagLayout();
photoPanel.setLayout(gbl);
GridBagConstraints gbc = new GridBagConstraints();
JScrollPane photoScroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
photoScroll.setViewportView(photoPanel);
pane.add(photoScroll);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.ipadx = 15;
gbc.fill = GridBagConstraints.HORIZONTAL;
JLabel photo = new JLabel();
Image img = new ImageIcon("C:\\Users\\Public\\Pictures\\Sample Pictures\\Desert.jpg").getImage();
Image newimg = img.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
ImageIcon newIcon = new ImageIcon(newimg);
photo.setIcon(newIcon);
gbl.setConstraints(photo, gbc);
photoPanel.add(photo);
JLabel photo1 = new JLabel();
Image img1 = new ImageIcon("C:\\Users\\Public\\Pictures\\Sample Pictures\\Lighthouse.jpg").getImage();
Image newimg1 = img1.getScaledInstance(50, 50, java.awt.Image.SCALE_SMOOTH);
ImageIcon newIcon1 = new ImageIcon(newimg1);
photo1.setIcon(newIcon1);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.ipadx = 15;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbl.setConstraints(photo1, gbc);
photoPanel.add(photo1);
// photoPanel.setPreferredSize(new Dimension(900, 900));
photoScroll.setPreferredSize(new Dimension(500, 500));
layout.putConstraint(SpringLayout.WEST, photoScroll, 60, SpringLayout.WEST, a);
layout.putConstraint(SpringLayout.NORTH, photoScroll, 100, SpringLayout.NORTH, a);
}
private void createAndShowGUI() { // Creating the GUI...
frame.getContentPane().setBackground(Color.WHITE);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("PhotoAlbum55");
// Set up the content pane.
addComponentsToPane(frame.getContentPane());
frame.pack();
frame.setSize(690, 622);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
}
/**
* Launch the application.
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
new grid();
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
两个图像位于同一y坐标上,因此应用程序的行为符合预期。另一方面,x坐标不同,因此需要设置
gbc.weightx = 1;
以便定位。如果需要将图像添加到面板顶部,则需要将其固定在那里,并沿y轴设置权重:
gbc.anchor = GridBagConstraints.NORTH;
gbc.weighty = 1;
问题内容: 我正在尝试使用和约束来定位我的按钮。但是它们不起作用!如果更改和变量,则什么也不会发生。如果我将填充更改为,它仍然不起作用。 我在这里想念什么吗? 如果很难理解,这里就是问题所在: 问题答案: 自从我完成了挥杆布局以来已经有一段时间了,但是如果您的JPanel中有多个JComponent,则gridX和gridY不会仅具有效果吗?看来您只有一个JButton,所以GridBagLayo
我目前已经用下面的代码创建了一个JFrame。我希望有三个JLabel,一个在另一个上面,它们对应的JTextFields在右边,下面有四个JButtons(我最终将使用插入来分隔它们)。但是,单元格在一行中在框架顶部对齐。谁能看出我正在犯的错误。多谢了。 它目前正在生产的JFrame是: **我意识到我没有在面板中设置GridBagLayout,所以添加了一行:
我有一个从文件生成的面板。我不知道到底要添加多少字段和标签,我希望它包含两列label和field。我认为我可以通过GridBagLayout和GridBagConstraints来做到这一点,但我不知道如何做到这一点。有人知道如何从JPanel/JFrame中恢复GridBagConstraints吗? 如果没有,我们将非常感谢您提出的任何替代方案。
问题内容: 我想这样布局我的JPane: 这样,顶部比底部更大/更小(顶部由另一个JPanel组成,并使用Graphics对象显示图像,而底部也由另一个JPanel组成,但使用Graphics对象绘制一些线和文字)。 我听说最好的方法是使用GridBagLayout和GridBagConstraints。 我试图找出GridBagConstraints的适当属性,但遇到了一些困难。这是我到目前为止
我想在菜单栏文本被选中时更改它的颜色。 这里可能出了什么问题? 我尝试使用伪类':active',但没有得到应用。其中as':Hover'正在工作。 我还尝试使用'Router LinkActive',它应该添加类'Active-Link',但这也不起作用。 我在下面给出了HTML、SCCS和TS代码: