我已经编写了这段代码,但是我想在其中编写代码时遇到了麻烦。当我按下三个按钮之一时,我想使绿色方块改变尺寸,所以当我按下``小''按钮时,方块将改变大小,例如100,当我按下按钮“中”时,它会将尺寸更改为中,例如400.到目前为止,这是我的代码:
package Lab2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
public static void main(String[] args) {
FilledFrame frame = new FilledFrame();
frame.setVisible( true );
}
}
class FilledFrame extends JFrame {
int size = 400;
public FilledFrame()
{
JButton butSmall = new JButton("Small");
JButton butMedium = new JButton("Medium");
JButton butLarge = new JButton("Large");
JButton butMessage = new JButton("Say Hi");
SquarePanel panel = new SquarePanel(this);
JPanel butPanel = new JPanel();
butPanel.add(butSmall);
butPanel.add(butMedium);
butPanel.add(butLarge);
butPanel.add(butMessage);
add(butPanel, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
setSize( size+100, size+100 ); } }
class SquarePanel extends JPanel {
FilledFrame theApp;
SquarePanel(FilledFrame app)
{
theApp = app;
}
public void paintComponent ( Graphics g)
{
super.paintComponent(g);
g.setColor(Color.green);
g.fillRect(20, 20, theApp.size, theApp.size);
}
}
class buttonHandler implements ActionListener {
FilledFrame theApp;
int size;
public buttonHandler(FilledFrame app, int size) {
theApp = app;
this.size = size;
}
@Override
public void actionPerformed (ActionEvent e){
theApp.setSize(this.size, this.size);
}
}
答案 0 :(得分:0)
由于我没有看到按钮的任何事件侦听器,因此我假设这就是您拥有的所有代码。您的按钮不会执行任何操作,除非您告诉他们执行此操作。您需要添加事件侦听器,然后更改大小并更新面板。
示例:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
theApp.size = 200;
frame.getContentPane().repaint();
//OR frame.repaint();
}
});
编辑: 使用按钮处理程序类的问题是,您需要找到按下了哪个按钮,而不是使用上面显示的方法更容易。我在上面的代码中进行了编辑,请尝试将粘贴复制到按钮之一。