首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >展开和收缩按钮单击

展开和收缩按钮单击
EN

Stack Overflow用户
提问于 2013-03-19 12:05:34
回答 2查看 1.9K关注 0票数 1

这是我需要完成的第二个学校作业。下面是作业信息。

创建一个带有两个按钮的框架,称为展开和收缩。单击“展开”按钮时,框架将展开10%。单击“收缩”按钮时,框架将收缩10%。通过使用setSize()在actionPerformed()方法中执行此操作。使用两个int类型的实例变量跟踪帧的当前大小。如果将它们增加或减少10%,则必须使用整数运算或使用类型转换。

我已经把框架和按钮都设置好了。当然来自在线研究,但我就是做不对。例如。每次我点击收缩按钮时,里面的框架都会收缩,展开的也是一样的(在框架内展开)。请看一下代码。顺便说一下,请告诉我一个更好的方法来创建框架和更少的代码按钮。

代码语言:javascript
复制
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 );
}

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-19 12:25:50

更改:

代码语言:javascript
复制
getContentPane().setSize(w.intValue(),l.intValue());

至:

代码语言:javascript
复制
// 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();
票数 2
EN

Stack Overflow用户

发布于 2013-03-19 12:16:00

  1. 我不知道为什么您需要使用Double来实现这一点,double就更好了。
  2. 在事件调度线程的上下文中创建您的框架(查看Initial Threads
  3. 内容窗格的大小将没有任何影响,您实际上需要更改框架本身的大小,因为您是从<代码>D11扩展而来的。不管怎样,您应该专心在构造函数中初始化框架(例如设置它的初始大小)<代码>H212<代码>G213

您的main方法应该看起来更像...

代码语言:javascript
复制
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");
        }
    });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15491292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档