多亏了这里有用的回复,我的图形用户界面达到了我想要的效果--
这是GUI,这是添加了ActionListener的当前代码:
import java.awt.*;
import javax.swing.*;
public class GUITest extends JFrame {
JButton testButton1 = new JButton("Do something");
JButton testButton2 = new JButton("Do something different");
JButton testButton3 = new JButton("Do something even more different");
public GUITest() {
super("Testing Title");
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
pane.add(getHeader(),BorderLayout.NORTH);
pane.add(getTextArea(),BorderLayout.CENTER);
pane.add(getButtonPanel(),BorderLayout.SOUTH);
}
public JComponent getHeader() {
JPanel labelPanel = new JPanel();
labelPanel.setLayout(new GridLayout(1,2));
labelPanel.setSize(getPreferredSize());
JLabel labelLocal = new JLabel("Left value: ", JLabel.CENTER);
JLabel labelDB = new JLabel("Right value: ", JLabel.CENTER);
labelPanel.add(labelLocal);
labelPanel.add(labelDB);
return labelPanel;
}
public JComponent getTextArea() {
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridLayout(1,2,5,0));
JTextArea testTextArea = new JTextArea();
testTextArea.setEditable(false);
JScrollPane sp1 = new JScrollPane(testTextArea);
JTextArea testTextArea2 = new JTextArea();
JScrollPane sp2 = new JScrollPane(testTextArea2);
testTextArea2.setEditable(false);
testTextArea.setText("Hello Hello Hello\nTesting!\ntesterino\ntesteroni");
testTextArea2.setText("Hello Hello Hello\nTesting!\ntest\nABC123\ncdef123\nhijk123");
textPanel.add(sp1);
textPanel.add(sp2);
return textPanel;
}
public JComponent getButtonPanel() {
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
testButton1.addActionListener(this);
testButton2.addActionListener(this);
testButton3.addActionListener(this);
buttonPanel.add(testButton1);
buttonPanel.add(testButton2);
buttonPanel.add(testButton3);
return buttonPanel;
}
public void actionPerformed(ActionEvent event) {
if(event.getSource() == this.testButton1){
System.out.println("testButton1!");
}
if(event.getSource() == this.testButton2){
System.out.println("testButton2!");
}
if(event.getSource() == this.testButton3){
System.out.println("testButton3!");
}
}
public static void main(String[] args) {
GUITest e = new GUITest();
e.setVisible(true);
e.setMinimumSize(new Dimension(650, 200));
e.pack();
e.setDefaultCloseOperation(EXIT_ON_CLOSE);
e.setLocationRelativeTo(null);
}
}
我读过一些关于使用JOptionPane的文章,但显然这并没有给我想要的灵活性,因为我不仅想要按钮,还想要两个标签和文本区域。
基本上,我想做的是:
//...
//other code that comes before
GUITest.openGUI();
if(button1 == pressed)
{
//do something and hide GUI
}
else if(button2 == pressed)
{
//do something else and hide GUI
}
//afterwards, there is more code, but it only gets executed after a button press
我希望执行停止,直到我选择按下Button1或Button2。我不想做等待(),因为这可能是糟糕的性能。
谢谢你的帮助!
我读过一些关于使用JOptionPane的文章,但显然这并没有给我想要的灵活性,因为我不仅想要按钮,还想要两个标签和文本区域。
然后你会想阅读更多关于JOptionPane的内容,因为它当然可以显示所有这些动物等等。了解JOptionPane的对象参数。showXxx(…) 方法可以将任何Swing组件作为其值。这意味着JOptionPane可以接受并显示一个JPanel,其中包含多个组件,包括其他JPanel,实际上可以包含整个复杂的GUI。例如,请查看此链接。
另一个选项是创建自己的JDialog,使其成为模态,并在其中显示停止的GUI;两者都可以。
基本上,我想做的是:
//other code that comes before
GUITest.openGUI();
if(button1 == pressed)
{
//do something and hide GUI
}
else if(button2 == pressed)
{
//do something else and hide GUI
}
//afterwards, there is more code, but it only gets executed after a button press
在这里,您可能会误解事件驱动程序的工作方式。这里不需要“等待”任何东西,而是需要在事件发生时做出反应,例如按钮推送。关键是使用您的侦听器对按钮推送做出反应,并根据程序的状态改变这种反应的行为。
我目前正在开发一个聊天程序的登录表单,希望该程序加载框架并等待用户输入。不可饶恕的是,程序打开了框架,但同时又恢复了主方法。我希望你有一些想法来帮助我。 问候语 JFrame类:
问题内容: 下面的代码正确返回该单元格: 但是在表视图中查找indexpath会崩溃: 我尝试了另一种方法,但是没有成功: 问题答案: 我不知道是否有简单的方法可以做到这一点。( 编辑: 实际上有。请查看@mustafa的第二个解决方案。)一种解决方法是将按钮的标签设置为in ,然后可以仅访问按钮的标签以找出按钮所属的行。 警告: 此解决方法很脆弱。如果您允许在不调用的情况下从表中添加或删除行,则
在我的程序中,它将单击浏览器中的一个按钮,并且在该页面中,应该会出现另一个按钮。出现该按钮后,我的程序将立即运行下一个操作来单击下一个按钮。我目前收到此错误: ElementNotVisibleException:消息:元素不可见 因此,我假设我正在调用该操作,以便在该按钮出现之前单击下一个按钮。我的问题是,我该怎么做才能让我的程序等到我可以点击按钮,再点击按钮? 这就是我的程序底部的代码的样子。
我等待用户按下两个是或否按钮中的一个。在这些回调中,我将变量分别更新为或。 当我执行MATLAB GUI时,我必须按两次YES按钮才能使值生效。有什么提示/提示可以克服这个问题吗?
我无法弄清楚每三个条目的like按钮是如何以及为什么被按下的,从我实际按下的like按钮开始,但(幸运的是)只有一个,而且也调用了正确的API。 请帮忙。
问题内容: 我希望我的应用程序中的按钮样式在按下时可以更改。做这个的最好方式是什么? 问题答案: 使用。 这里是一个例子: