新手求助java程序图形界面设计问题

试了半天,也没搞出来...弄了半天,没成功,你先看看这个例子:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class PlafTest{public static void main(String[] args){FontDialogFrame frame = new FontDialogFrame();frame.setDefaultClose...
新手求助java程序图形界面设计问题
在Entry构造函数中加入如下代码就可以了
addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent ce){
panel.setBounds(getWidth()/2-100,getHeight()/2-85,210,122);
button1.setBounds(getWidth()/2-185,getHeight()/2+45,85,30);
button2.setBounds(getWidth()/2-90,getHeight()/2+45,85,30);
button3.setBounds(getWidth()/2+5,getHeight()/2+45,85,30);
button4.setBounds(getWidth()/2+100,getHeight()/2+45,85,30);
repaint();
}
});//当窗口改变时调用此方法重设组件位置2010-10-22
弄了半天,没成功,你先看看这个例子:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class PlafTest
{
public static void main(String[] args)
{
FontDialogFrame frame = new FontDialogFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

/**
A frame that uses a spring layout to arrange font
selection components.
*/
class FontDialogFrame extends JFrame
{
public FontDialogFrame()
{
setTitle("FontDialog");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

JPanel panel = new JPanel();
SpringLayout layout = new SpringLayout();
panel.setLayout(layout);

ActionListener listener = new FontAction();

// construct components

JLabel faceLabel = new JLabel("Font Face: ");

face = new JComboBox(new String[]
{
"Serif", "SansSerif", "Monospaced",
"Dialog", "DialogInput"
});

face.addActionListener(listener);

JLabel sizeLabel = new JLabel("Size: ");

size = new JComboBox(new String[]
{
"8", "10", "12", "15", "18", "24", "36", "48"
});

size.addActionListener(listener);

bold = new JCheckBox("Bold");
bold.addActionListener(listener);

italic = new JCheckBox("Italic");
italic.addActionListener(listener);

sample = new JTextArea();
sample.setText("The quick brown fox jumps over the lazy dog");
sample.setEditable(false);
sample.setLineWrap(true);
sample.setBorder(BorderFactory.createEtchedBorder());

panel.add(faceLabel);
panel.add(sizeLabel);
panel.add(face);
panel.add(size);
panel.add(bold);
panel.add(italic);
panel.add(sample);

// add springs to lay out components
Spring strut = Spring.constant(10);

Spring labelsEast = Spring.sum(strut,
Spring.max(
layout.getConstraints(faceLabel).getWidth(),
layout.getConstraints(sizeLabel).getWidth()));

layout.putConstraint(SpringLayout.EAST, faceLabel, labelsEast, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.EAST, sizeLabel, labelsEast, SpringLayout.WEST, panel);

layout.putConstraint(SpringLayout.NORTH, faceLabel, strut, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.NORTH, face, strut, SpringLayout.NORTH, panel);

Spring secondRowNorth = Spring.sum(strut,
Spring.max(
layout.getConstraint(SpringLayout.SOUTH, faceLabel),
layout.getConstraint(SpringLayout.SOUTH, face)));

layout.putConstraint(SpringLayout.NORTH, sizeLabel, secondRowNorth, SpringLayout.NORTH,
panel);
layout.putConstraint(SpringLayout.NORTH, size, secondRowNorth, SpringLayout.NORTH, panel);

layout.putConstraint(SpringLayout.WEST, face, strut, SpringLayout.EAST, faceLabel);
layout.putConstraint(SpringLayout.WEST, size, strut, SpringLayout.EAST, sizeLabel);

layout.putConstraint(SpringLayout.WEST, bold, strut, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.WEST, italic, strut, SpringLayout.WEST, panel);

Spring s = Spring.constant(10, 10000, 10000);

Spring thirdRowNorth = Spring.sum(s,
Spring.max(
layout.getConstraint(SpringLayout.SOUTH, sizeLabel),
layout.getConstraint(SpringLayout.SOUTH, size)));

layout.putConstraint(SpringLayout.NORTH, bold, thirdRowNorth, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.NORTH, italic, s, SpringLayout.SOUTH, bold);
layout.putConstraint(SpringLayout.SOUTH, panel, s, SpringLayout.SOUTH, italic);

Spring secondColumnWest = Spring.sum(strut,
Spring.max(
layout.getConstraint(SpringLayout.EAST, face),
layout.getConstraint(SpringLayout.EAST, size)));

layout.putConstraint(SpringLayout.WEST, sample, secondColumnWest, SpringLayout.WEST, panel);
layout.putConstraint(SpringLayout.SOUTH, sample, Spring.minus(strut), SpringLayout.SOUTH,
panel);
layout.putConstraint(SpringLayout.NORTH, sample, strut, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.EAST, panel, strut, SpringLayout.EAST, sample);

add(panel);
}

public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 200;

private JComboBox face;
private JComboBox size;
private JCheckBox bold;
private JCheckBox italic;
private JTextArea sample;

/**
An action listener that changes the font of the
sample text.
*/
private class FontAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String fontFace = (String) face.getSelectedItem();
int fontStyle = (bold.isSelected() ? Font.BOLD : 0)
+ (italic.isSelected() ? Font.ITALIC : 0);
int fontSize = Integer.parseInt((String) size.getSelectedItem());
Font font = new Font(fontFace, fontStyle, fontSize);
sample.setFont(font);
sample.repaint();
}
}
}2010-10-21
Jpanel的大小一定要定死吗?不然的话用布局管理器就简单多了。

试了半天,也没搞出来...........2010-10-21
自己写个事件处理吧,父窗口改变大小的事件,然后计算新的大小值,重新设置JPanel的位置2010-10-22
mengvlog 阅读 8 次 更新于 2025-07-19 19:44:02 我来答关注问题0
  • addComponentListener(new ComponentAdapter(){ public void componentResized(ComponentEvent ce){ panel.setBounds(getWidth()/2-100,getHeight()/2-85,210,122);button1.setBounds(getWidth()/2-185,getHeight()/2+45,85,30);button2.setBounds(getWidth()/2-90,getHeight()/2+45,85,30);but...

  •  深空见闻 新手求助虚拟内存 初始大小 跟最大值设置多少最好

    虚拟内存的初始大小和最大值最好设置为物理内存的1.53倍。以下是关于虚拟内存设置的详细建议:推荐设置范围:初始大小:建议设置为物理内存的1.5倍左右。最大值:建议设置为物理内存的3倍左右。这个范围是一个较为合理的平衡点,既能满足大多数应用程序的需求,又不会过多占用硬盘空间。自动托管建议:...

  •  海南加宸 新手求助,unity打不开也创建不了project

    解决这个问题的方法之一是通过设置来始终显示Project Wizard界面。你可以右击Unity程序图标,选择“属性”,在“目标路径”后面添加空格,然后输入”-projectPath“,并应用此设置。这样,每次启动Unity时,它都会提示你选择或创建一个新项目。请注意,这个设置只会影响启动Unity时的行为,并不会改变你项目的兼...

  •  地瓜说机 新手求助,Android Studio安装

    下载Android Studio安装包(DMG文件),打开并将Android Studio拖动到Applications中去,拷贝完毕即可,可以到应用程序下将图标拖动到Dock上。二、新建工程 安装完成后,选择默认选项点击OK即可:进入Android Studio,开始界面和Xcode有点类似,点击New project新建一个工程,新建过程和在Eclipse上差不多,这里就...

  •  腾云新分享 关于新手求助QT编程,如何动态设置QLineEdit控件的内容

    编写一个简单的程序来动态设置QLineEdit控件的内容,确实是一件很基础的事情。具体步骤大致如下:首先,你需要自定义一个类,该类继承自QWidget,同时包含QPUSHBUTTON和QLINEEDIT两个子部件。接着,定义一个槽函数,这个函数负责修改QLineEdit中的文本内容。为了使按钮能够触发槽函数,你需要使用connect函数将Q...

檬味博客在线解答立即免费咨询

报错相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部