这是我需要完成的第二次学校作业。以下是作业信息。
使用两个按钮创建一个框架,名为Expand and Shrink。单击“展开”按钮时,框架将扩展10%。单击“缩小”按钮时,框架会缩小10%。使用setSize()在actionPerformed()方法中执行此操作。使用int类型的两个实例变量跟踪帧的当前大小。当你增加或减少它们10%时,你将不得不使用整数运算或使用类型转换。
我已经设置了框架和按钮。当然,从在线研究,但我不能正确。防爆。每次单击缩小按钮时,内部框架都会缩小,同时展开的内容也会缩小(在框架内部展开)。请看一下代码。顺便说一下,请给我一个更好的方法来创建框架和代码更少的按钮。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Expandshrink extends JFrame implements ActionListener
{
JButton expand;
JButton shrink;
Double w = 300.0, l = 200.0;
Expandshrink(String title)
{
expand = new JButton("Expand");
shrink = new JButton("Shrink");
expand.setActionCommand("expand");
shrink.setActionCommand("shrink");
expand.addActionListener(this);
shrink.addActionListener(this);
setLayout(new FlowLayout());
add(expand);
add(shrink);
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
public void actionPerformed(ActionEvent evt)
{
try
{
if (evt.getActionCommand().equals("expand"))
{
w = w*1.1;
l = l*1.1;
}
else if (evt.getActionCommand().equals("shrink"))
{
w = w*0.9;
l = l*0.9;
}
getContentPane().setSize(w.intValue(),l.intValue());
}
catch ( Exception ex )
{
}
}
public static void main ( String[] args )
{
Expandshrink frm = new Expandshrink("Expand & Shrink");
frm.setSize( 300, 200 );
frm.setVisible( true );
}
}
答案 0 :(得分:2)
Double
,double
会更好。JFrame
延伸,你应该努力在构造函数中初始化框架(例如设置它的初始大小)你main
方法应该更像......
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
Expandshrink frm = new Expandshrink("Expand & Shrink");
}
});
}
答案 1 :(得分:2)
变化:
getContentPane().setSize(w.intValue(),l.intValue());
为:
// layout managers are more likely to honor the preferred size
//getContentPane().setSize(w.intValue(),l.intValue());
getContentPane().setPreferredSize(new Dimension(w.intValue(),l.intValue()));
Expandshrink.this.pack();