- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚如何更改 FlowLayout 与组合框的对齐方式,但由于某种原因 setAlignment 方法对我不起作用;我的代码没有做任何事情。当我创建一个全新的对象时它会起作用,例如:
buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT);
但是 HGap 和 VGap 部件无法正常工作;它不是在组件之间创建空间,而是分别水平和垂直扩展面板。非常感谢任何帮助!
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.TitledBorder;
public class HW3LayoutSettings extends JFrame {
private JPanel buttonPanel = new JPanel();
private JPanel propertiesPanel = new JPanel();
private JButton comp0 = new JButton("Component 0");
private JButton comp1 = new JButton("Component 1");
private JButton comp2 = new JButton("Component 2");
private JButton comp3 = new JButton("Component 3");
private JButton comp4 = new JButton("Component 4");
private JButton comp5 = new JButton("Component 5");
private JButton comp6 = new JButton("Component 6");
private JButton comp7 = new JButton("Component 7");
private JButton comp8 = new JButton("Component 8");
private JButton comp9 = new JButton("Component 9");
private JButton comp10 = new JButton("Component 10");
private JButton comp11 = new JButton("Component 11");
private JButton comp12 = new JButton("Component 12");
private JButton comp13 = new JButton("Component 13");
private JButton comp14 = new JButton("Component 14");
private FlowLayout flow = new FlowLayout();
private JLabel alignLabel = new JLabel("Alignment");
private JLabel hGapLabel = new JLabel("HGap:");
private JLabel vGapLabel = new JLabel("VGap:");
private JTextField hGapField = new JTextField();
private JTextField vGapField = new JTextField();
private GridLayout grid = new GridLayout(3, 3);
private String[] align = {"LEFT", "CENTER", "RIGHT"};
private JComboBox combobox = new JComboBox(align);
private Integer hGapInt;
private Integer vGapInt;
public HW3LayoutSettings() {
buttonPanel.setLayout(flow);
buttonPanel.add(comp0);
buttonPanel.add(comp1);
buttonPanel.add(comp2);
buttonPanel.add(comp3);
buttonPanel.add(comp4);
buttonPanel.add(comp5);
buttonPanel.add(comp6);
buttonPanel.add(comp7);
buttonPanel.add(comp8);
buttonPanel.add(comp9);
buttonPanel.add(comp10);
buttonPanel.add(comp11);
buttonPanel.add(comp12);
buttonPanel.add(comp13);
buttonPanel.add(comp14);
propertiesPanel.setLayout(grid);
propertiesPanel.add(alignLabel);
propertiesPanel.add(combobox);
propertiesPanel.add(hGapLabel);
propertiesPanel.add(hGapField);
propertiesPanel.add(vGapLabel);
propertiesPanel.add(vGapField);
add(buttonPanel, BorderLayout.CENTER);
add(propertiesPanel, BorderLayout.SOUTH);
TitledBorder titled1 = new TitledBorder("Container of FlowLayout");
buttonPanel.setBorder(titled1);
TitledBorder titled2 = new TitledBorder("FlowLayout Properties");
propertiesPanel.setBorder(titled2);
combobox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s = (String) combobox.getSelectedItem();
switch (s) {
case "LEFT": {
flow.setAlignment(FlowLayout.LEFT);
validate();
break;
}
case "CENTER": {
flow.setAlignment(FlowLayout.CENTER);
validate();
break;
}
case "RIGHT": {
flow.setAlignment(FlowLayout.RIGHT);
validate();
break;
}
}
}
});
hGapField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hGapInt = Integer.parseInt(hGapField.getText());
flow.setHgap(hGapInt);
setSize((int) (getWidth() + hGapInt), getHeight());
validate();
}
});
vGapField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
vGapInt = Integer.parseInt(vGapField.getText());
flow.setVgap(vGapInt);
setSize(getWidth(), (int) (getHeight() + vGapInt));
validate();
}
});
}
public static void main(String[] args) {
HW3LayoutSettings frame = new HW3LayoutSettings();
frame.setTitle("HW3LayoutSettings");
frame.setSize(400, 320);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
最佳答案
validate();
更改布局属性时不要使用 validate()。
您应该使用:
buttonPanel.revalidate(); // invokes the layout manager
buttonPanel.repaint(); // repaints components
关于java - SetAlignment 方法在带有组合框的 FlowLayout 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33767558/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!