如何从函数返回JButton并使用它在java中的不同类中执行操作?
我如何从函数返回一个JButton并使用它在另一个类中执行操作,我创建一个库只是为了练习我的java技能(我缺少这一部分),我试图通过创建对象和函数来处理它,使创建JFrames和JButton变得更简单,问题是,在Frame.java上,我返回在那里创建的JButton,然后将其与如何从函数返回JButton并使用它在java中的不同类中执行操作?,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,我如何从函数返回一个JButton并使用它在另一个类中执行操作,我创建一个库只是为了练习我的java技能(我缺少这一部分),我试图通过创建对象和函数来处理它,使创建JFrames和JButton变得更简单,问题是,在Frame.java上,我返回在那里创建的JButton,然后将其与ActionListener一起使用,但问题是,它既不显示错误,也不起作用,是否有人能给我解释一下,如果可能的话,提供一个解决方案 Ctrl+F:9812934|从返回按钮和使用按钮的位置切换 Main.java p
ActionListener
一起使用,但问题是,它既不显示错误,也不起作用,是否有人能给我解释一下,如果可能的话,提供一个解决方案
Ctrl+F:9812934
|从返回按钮和使用按钮的位置切换
Main.java
package twopackages;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import lib.Button;
import lib.Frame;
public class Main extends Frame{
public static void main(String[] args ){
Frame frame = new Frame();
Button button = new Button();
frame.width = 400;
frame.height = 300;
frame.title = "title";
frame.visible = true;
button.width = 100;
button.height = 30;
button.title = "button";
button.top = 10;
button.left = 10;
button.visible = true;
frame.addButton(button);
frame.run();
frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
public void actionPerformed(ActionEvent arg0) {
System.out.println("sadasdasd");
}
});
}
}
package lib;
import javax.swing.JButton;
import javax.swing.JFrame;
import lib.Button;
public class Frame {
public int width;
public int height;
public String title;
public boolean visible;
JFrame FRAME = new JFrame();
public void run(){
FRAME.setSize(width, height);
FRAME.setTitle(title);
FRAME.setLayout(null);
FRAME.setLocationRelativeTo(null);
FRAME.setVisible(visible);
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.setResizable(false);
}
public JButton addButton(Button button){
JButton BUTTON = new JButton();
BUTTON.setText(button.title);
BUTTON.setBounds(button.left, button.top, button.width, button.height);
BUTTON.setVisible(button.visible);
FRAME.add(BUTTON);
return BUTTON;//Here's where I return the JButton 9812934
}
}
package lib;
import javax.swing.JButton;
public class Button{
public int left;
public int top;
public int width;
public int height;
public String title;
public boolean visible;
JButton button = new JButton();
public void button(){
button.setBounds(left, top, width, height);
button.setText(title);
button.setVisible(visible);
}
}
Frame.java
package twopackages;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import lib.Button;
import lib.Frame;
public class Main extends Frame{
public static void main(String[] args ){
Frame frame = new Frame();
Button button = new Button();
frame.width = 400;
frame.height = 300;
frame.title = "title";
frame.visible = true;
button.width = 100;
button.height = 30;
button.title = "button";
button.top = 10;
button.left = 10;
button.visible = true;
frame.addButton(button);
frame.run();
frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
public void actionPerformed(ActionEvent arg0) {
System.out.println("sadasdasd");
}
});
}
}
package lib;
import javax.swing.JButton;
import javax.swing.JFrame;
import lib.Button;
public class Frame {
public int width;
public int height;
public String title;
public boolean visible;
JFrame FRAME = new JFrame();
public void run(){
FRAME.setSize(width, height);
FRAME.setTitle(title);
FRAME.setLayout(null);
FRAME.setLocationRelativeTo(null);
FRAME.setVisible(visible);
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.setResizable(false);
}
public JButton addButton(Button button){
JButton BUTTON = new JButton();
BUTTON.setText(button.title);
BUTTON.setBounds(button.left, button.top, button.width, button.height);
BUTTON.setVisible(button.visible);
FRAME.add(BUTTON);
return BUTTON;//Here's where I return the JButton 9812934
}
}
package lib;
import javax.swing.JButton;
public class Button{
public int left;
public int top;
public int width;
public int height;
public String title;
public boolean visible;
JButton button = new JButton();
public void button(){
button.setBounds(left, top, width, height);
button.setText(title);
button.setVisible(visible);
}
}
Button.java
package twopackages;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import lib.Button;
import lib.Frame;
public class Main extends Frame{
public static void main(String[] args ){
Frame frame = new Frame();
Button button = new Button();
frame.width = 400;
frame.height = 300;
frame.title = "title";
frame.visible = true;
button.width = 100;
button.height = 30;
button.title = "button";
button.top = 10;
button.left = 10;
button.visible = true;
frame.addButton(button);
frame.run();
frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
public void actionPerformed(ActionEvent arg0) {
System.out.println("sadasdasd");
}
});
}
}
package lib;
import javax.swing.JButton;
import javax.swing.JFrame;
import lib.Button;
public class Frame {
public int width;
public int height;
public String title;
public boolean visible;
JFrame FRAME = new JFrame();
public void run(){
FRAME.setSize(width, height);
FRAME.setTitle(title);
FRAME.setLayout(null);
FRAME.setLocationRelativeTo(null);
FRAME.setVisible(visible);
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.setResizable(false);
}
public JButton addButton(Button button){
JButton BUTTON = new JButton();
BUTTON.setText(button.title);
BUTTON.setBounds(button.left, button.top, button.width, button.height);
BUTTON.setVisible(button.visible);
FRAME.add(BUTTON);
return BUTTON;//Here's where I return the JButton 9812934
}
}
package lib;
import javax.swing.JButton;
public class Button{
public int left;
public int top;
public int width;
public int height;
public String title;
public boolean visible;
JButton button = new JButton();
public void button(){
button.setBounds(left, top, width, height);
button.setText(title);
button.setVisible(visible);
}
}
您应该将按钮添加到框架的contentPane中,而不是添加到自己的框架中。始终建议在面板级别而不是swing中的框架上工作您应该将按钮添加到框架的内容窗格中,而不是添加到自己的框架中。总是建议在面板级别而不是swing中的框架上工作,因为您创建了一个
JButton
的两个实例,并将它们相互叠加,这正是@Andrew在其评论中警告您的。当您单击该按钮时,实际上是在单击未附加操作侦听器实现的按钮
以下是相关位:
//frame.addButton(按钮);// 您的代码不起作用,因为您创建了一个JButton
的两个实例,并将它们相互叠加,这正是@Andrew在其评论中警告您的。当您单击该按钮时,实际上是在单击未附加操作侦听器实现的按钮
以下是相关位:
//frame.addButton(按钮);//1) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 请学习常见的Java命名法(命名约定-例如,EachWordUpperCaseClass
,firstWordLowerCaseMethod()
,firstWordLowerCaseAttribute
,除非它是一个大写常量
),并一致地使用它。1)Java GUI必须在不同的操作系统上工作,屏幕大小,屏幕分辨率等。在不同地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 请学习常见的Java命名法(命名约定-例如,EachWordUpperCaseClass
,firstWordLowerCaseMethod()
,firstWordLowerCaseAttribute
,除非它是一个大写常量
),并一致地使用它。哦,这是完全正确的,我现在看到了,它是有效的,感谢您的解释和建议+1哦,这是完全正确的,我现在明白了,它起作用了,感谢您的解释和建议+1