JButton(スクリーンショットの右のボックス)を持つJDialogがあります。 JButtonをクリックすると、別のJFrameのJPanelのサイズを変更したい(スクリーンショットの左のボックス)。JButtonからJPanelのサイズを変更する
私の問題は、現在、私のアプリケーションは、「クリックしてください」というボタンをクリックすると、JPanelのサイズを新しいサイズ(20,20)に変更しないということです。ボタンをクリックすると、私のテストテキスト「Hello world」がコンソールに表示されます。
例のスクリーンショット:
代替リンクスクリーンショットが表示されていない場合:ここではhttp://www.dachaufsetzer.net/files/images/other/java-question-1.jpg
は私のコードです:
Dialog.java(JDialogの)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Dialog extends JDialog implements ActionListener{
public Dialog(){
JDialog d = new JDialog();
d.setSize(300, 300);
JButton b = new JButton("click me");
b.addActionListener(new Generator());
d.add(b);
d.setVisible(true);
}
}
Gener (Generator.javaを使用したJFrame)ator.java(Frame.javaに使用されるのJPanel)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Generator extends JPanel implements ActionListener{
int width;
int height;
public Generator(){
}
public Generator(int w, int h){
this.width = w;
this.height = h;
super.setBackground(Color.red);
super.setPreferredSize(new Dimension(this.width, this.height));
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillOval(0, 0, 50, 50);
}
@Override
public void actionPerformed(ActionEvent e) {
super.setPreferredSize(new Dimension(20, 20));
System.out.println("Hello world");
}
}
Frame.java
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class Frame extends JFrame {
public Frame(){
JFrame f = new JFrame();
f.setSize(400, 400);
Generator g = new Generator(2000, 2000);
JScrollPane scrollPane = new JScrollPane(g);
scrollPane.setPreferredSize(new Dimension(300,300));
f.add(scrollPane);
f.setVisible(true);
}
}
メイン.java(メインクラス)
public class Main {
public static void main(String[] args) {
Frame window = new Frame();
Dialog d = new Dialog();
}
}
ありがとうございます。あなたはまた、適切なサイズをリセットした後revalidate()
を起動する必要がActionListener
コードで
Flood2dのご協力をいただきありがとうございます。今それは明らかです! – spiceflo