我不使用GUI编辑器手动创建布局,我需要将高度设置为“自动”,以便用户可以看到整个表单。我将GridLayout包装到FlowLayout中,这样输入就不会被拉伸。创建这样的布局的最佳实践是什么。是否有人可以修改它,使整个表单可见或使用GridLayout,但可以设置表单中输入的宽度和高度?
package helpdesk;
import java.awt.*;
import javax.swing.*;
/**
*
* @author Joko Wandiro
*/
public class Layout extends Base {
JPanel panel_form_edit = new JPanel();
FlowLayout layout_form_edit_outer = new FlowLayout(FlowLayout.LEFT);
JPanel panel_form_edit_outer = new JPanel();
// Form - Edit
JLabel label_name_update = new JLabel("Name", JLabel.LEFT);
JTextField input_id_update = new JTextField();
JTextField input_name_update = new JTextField();
JButton btn_update = new JButton("Update");
public Layout() {
setLookAndFeel();
setExtendedState(JFrame.MAXIMIZED_BOTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Main Layout
GridLayout layout = new GridLayout(5, 1, 10, 10);
setLayout(layout);
// Form - Edit
label_name_update.setPreferredSize(new Dimension(400, 20));
input_name_update.setPreferredSize(new Dimension(400, 20));
input_id_update.setVisible(false);
GridLayout layout_form_edit = new GridLayout(4, 1, 10, 10);
panel_form_edit.setLayout(layout_form_edit);
panel_form_edit.add(input_id_update);
panel_form_edit.add(label_name_update);
panel_form_edit.add(input_name_update);
panel_form_edit.add(btn_update);
panel_form_edit_outer.setLayout(layout_form_edit_outer);
panel_form_edit_outer.add(panel_form_edit);
add(panel_form_edit_outer);
panel_form_edit.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
panel_form_edit_outer.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Layout app = new Layout();
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
// ignore error
}
}
}
未使用包装方法设置首选尺寸
使用包装方法设置首选尺寸
将扩展状态设置为最大化,但更新按钮不完全可见。如何设置JPanel的高度以使窗体完全可见?
我想在最大化屏幕上显示JFrame。
非常感谢。
我使用JScrollPane使JFrame可滚动,以便整个表单可见。
package helpdesk;
import java.awt.*;
import javax.swing.*;
/**
*
* @author Joko Wandiro
*/
public class Layout extends Base {
JPanel panel_form_edit = new JPanel();
FlowLayout layout_form_edit_outer = new FlowLayout(FlowLayout.LEFT);
JPanel panel_form_edit_outer = new JPanel();
// Form - Edit
JLabel label_name_update = new JLabel("Name", JLabel.LEFT);
JTextField input_id_update = new JTextField();
JTextField input_name_update = new JTextField();
JButton btn_update = new JButton("Update");
public Layout() {
setLookAndFeel();
setExtendedState(JFrame.MAXIMIZED_BOTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Main Layout
GridLayout layout = new GridLayout(5, 1, 10, 10);
setLayout(layout);
// Form - Edit
label_name_update.setPreferredSize(new Dimension(400, 20));
input_name_update.setPreferredSize(new Dimension(400, 20));
input_id_update.setVisible(false);
GridLayout layout_form_edit = new GridLayout(4, 1, 10, 10);
panel_form_edit.setLayout(layout_form_edit);
panel_form_edit.add(input_id_update);
panel_form_edit.add(label_name_update);
panel_form_edit.add(input_name_update);
panel_form_edit.add(btn_update);
panel_form_edit_outer.setLayout(layout_form_edit_outer);
panel_form_edit_outer.add(panel_form_edit);
add(panel_form_edit_outer);
// Set window or jframe scrollable
Container container = getContentPane();
JScrollPane scroll = new JScrollPane(container);
setContentPane(scroll);
setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Layout app = new Layout();
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
// ignore error
}
}
}
我需要将“高度”设置为“自动”,以便用户可以看到整个表单。
您使用:
pack();
setVisible(true);
pack()
方法将使框架成为添加到框架中的所有组件的首选尺寸。
label_name_update.setPreferredSize(new Dimension(400, 20));
input_name_update.setPreferredSize(new Dimension(400, 20));
不要使用setPreferredsize(...)。每个Swing组件将根据文本、字体等确定自己的首选大小。
编辑:
GridLayout layout_form_edit = new GridLayout(5, 1, 10, 10);
上面一行似乎导致了这个问题。您指定了5行,但我猜框架上没有足够的空间容纳5行。
尝试:
GridLayout layout_form_edit = new GridLayout(0, 1, 10, 10);
问题内容: 我想使一个组件占据Container的maximumAvailableHeight。例如,在下面粘贴的代码中,我将根框架定为800,600。我只想设置该框架的高度/宽度(并且我不想尝试对其子像素进行像素化)。如果运行此命令,则会看到UI对齐不良。 首先,我希望面板(位于根框架内)占据框架的100%的高度(在这种情况下,为800px减去用于绘制框架标题的空间)。 其次,在面板内部,我有一
问题内容: 我有一个包装器div,其中两个容器彼此相邻。在此容器上方,我有一个包含我的标头的div。包装div必须为100%减去标题的高度。标头约为60像素。这是固定的。所以我的问题是:如何将包装div的高度设置为100%减去60像素? 问题答案: 这是一个正常工作的CSS,已在Firefox / IE7 / Safari / Chrome / Opera下进行了测试。 w3c尚未批准“ over
我的如下所示,高度设置为40度。 在MyEclipse中,它如下所示: 但是当我在手机上运行它时,它看起来像下面这样: 所以我的问题是为什么进度条的真实高度不是我设置的高度?如何增加进度条的高度?
问题内容: 我有三分之二的div。所包含的div之一向左浮动,另一个向右浮动。我希望2个同级div始终处于相同的高度,但是对此存在问题。到目前为止,我只在Firefox中查看该页面,并认为在至少一个浏览器中运行它后,我会担心任何跨浏览器的问题。 这是标记: 这是CSS: 如果中的内容长于,则不会扩展为匹配。在我尝试了一个例子,说的Firefox的计算式的高度是,的计算式的高度是和的计算的风格高度为
问题内容: 与传统的静态HTML相反,由于其动态生成的组件结构和事件模型,因此无法在React中使用该问题的典型解决方案: 脚本: 的HTML: 有一个NPM包,但看起来没有完成(只接受道具,,): https://www.npmjs.com/package/react- iframe 解决方案的可能部分是监听的事件,但以与React兼容的方式进行。 React中有没有一种方法可以将an 的高度设
关于UITableViewCell高度动画,在堆栈溢出方面有很多类似的问题,但对于新的iOS8自动布局驱动的表视图,这些问题都不起作用。我的问题: 自定义单元格: 注意旋转木马高度限制。这是内容视图的子视图(唯一的子视图)的高度约束。 然后,在“查看我要展开的所有操作”单元上,我的代码: 如您所见,我尝试使用这个很好的旧解决方案: 您可以在选中UITableViewCell时设置高度更改的动画吗?