相关疑难解决方法(0)

如何在GridLayout中获取元素的X和Y索引?

我正在研究一个java教程,看到在GridLayout中找到JButton的x/y索引的方法是遍历与布局关联的按钮b的二维数组,并检查是否

b[i][j] == buttonReference.

  @Override
  public void actionPerformed(ActionEvent ae) {
    JButton bx = (JButton) ae.getSource();
    for (int i = 0; i < 5; i++)
      for (int j = 0; j < 5; j++)
        if (b[i][j] == bx)
        {
          bx.setBackground(Color.RED);
        }
  }
Run Code Online (Sandbox Code Playgroud)

是否有更简单的方法来获取按钮的X/Y索引?

就像是:

JButton button = (JButton) ev.getSource();
int x = this.getContentPane().getComponentXIndex(button);
int y = this.getContentPane().getComponentYIndex(button);
Run Code Online (Sandbox Code Playgroud)

this是一个GameWindow实例,ev当用户按下按钮时触发ActionEvent.

在这种情况下,它应该得到:x == 2,y == 1

@ GameWindow.java:

package javaswingapplication;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

public class …
Run Code Online (Sandbox Code Playgroud)

java swing awt grid-layout

15
推荐指数
3
解决办法
4万
查看次数

自动完成JTextField和箭头键

我试图建立一个javax.swing.JTextFieldjavax.swing.JList用于自动完成像谷歌.

  • 当写一个单词时,Google显示几个匹配

    • 按下  ▼  我可以选择一些匹配使用  ▲   ,并  ▼  
    • 可以用  ◀ 和编辑我的输入  ▶  .
    • 当我按下   Enter         键搜索框中的内容.
    • 当按下Esc该框切换到原始输入时.

我的应用是关于圣经,我想在研究圣经时寻找一个特定的词.我已经看过Java2sAutoTextField,但箭头键没有这种特殊的行为.

java swing text jtextfield

9
推荐指数
1
解决办法
5025
查看次数

Java,大型GUI类,包含许多ActionListeners; 组织听众的最佳方式?

我一直在开发java程序一年半.我目前正在开展夏季项目,涉及相当大的图形用户界面.

我的GUI由几个选项卡式窗格组成.每个窗格都有自己的类.每个窗格都有几个jButtons.

现在,我已经到了一个点,在我的选项卡式窗格类中有很多匿名内部类(对于ActionListeners),我确信必须有更好的方法; 如果不是为了效率,那么为了可维护性 - 它变得非常混乱.

我的问题是:当你在每个班级中有很多听众时,是否有更好的组织听众?我已经考虑过在相关类中集中监听器 - 如下面的示例代码:

public class SomeListeners implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e){
        String command = e.getActionCommand();
        switch(command){
            case "This button":
                doThis();
                break;
            case "That button":
                doThat();
                break;                          
        }
    }     
}
Run Code Online (Sandbox Code Playgroud)

或者可能有更好的方法?

提前致谢 :)

java swing actionlistener

6
推荐指数
1
解决办法
2021
查看次数

如何使用MouseListener查找网格中的特定单元格

我正在尝试创建一个由单元格组成的10 x 10网格的Java游戏.网格看起来像这样:

public class Grid extends JPanel implements MouseListener {
    public static final int GRID_SIZE = 10;

    public Grid() {
        setPreferredSize(new Dimension(300, 300));
        setLayout(new GridLayout(GRID_SIZE, GRID_SIZE));

        for (int x = 0; x < GRID_SIZE; x++)
            for (int y = 0; y < GRID_SIZE; y++)
                add(new Cell(x, y));
        addMouseListener(this);
    }

// All Mouse Listener methods are in here.
Run Code Online (Sandbox Code Playgroud)

Cell类看起来像这样:

public class Cell extends JPanel {

    public static final int CELL_SIZE = 1;
    private int xPos;
    private int yPos;

    public Cell …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel grid-layout mouselistener

5
推荐指数
1
解决办法
3147
查看次数

拒绝为所有组件使用单个ActionListener?

对于路由操作请求,我想为所有组件使用单个ActionListener实例.可以使用setActionCommand区分对actionPerformed的调用.

这是建议吗?在MVC环境中,这种方法是否有任何潜在的缺点?

java model-view-controller swing actionlistener

4
推荐指数
2
解决办法
173
查看次数

定义内部类中的按钮操作Vs在swing中定义公共类中的按钮操作

我有一个对话框,它有四个按钮,分别是New,Save,Delete,Cancel.现在,每个人都需要执行他们的行动.所以我定义了一个实现了一个单独的类ActionListener.我已经使用这个类来执行每个按钮操作.

public class MyClass implements ActionListener {
  public void actionPerformed(ActionEvent e) { 
   if(e.getActionCommand().toString() == "OK") {
        // Code
   } else if( .. ){

   }
  }
}
Run Code Online (Sandbox Code Playgroud)

我所做的是,我定义了一个内部类,我曾经用它来做同样的功能.但是我没有得到的是,最好的做法是编写一个单独的类,还是最好使用内部类.我被建议在公共课上写,所以明天有人可以用这个课来表演他们的行动.所以我有以下问题,

  1. 如果任何对象都没有调用该功能(我不能说)那么我可以在内部类中编写它吗?要么

  2. 总是编写执行该对话框操作的内部类是一个好习惯吗?

java swing jbutton actionlistener

3
推荐指数
2
解决办法
695
查看次数

找到Java JButton数组的索引

我正在编写一个Java程序,其中有一系列按钮(不是计算器!),我正在寻找一种有效的方法来了解哪个JButton被点击了.据我所知,到目前为止,Java的唯一方法是将它们全部放在同一个ActionListener中,然后循环查找匹配项.

我刚想到的另一个解决方案是扩展JButton以在构造函数中包含唯一的ID号变量.在检查instanceof后将事件对象强制转换为JButton时,似乎应该可以工作.有点像使用分配给索引号的VB的Tag属性.

有更好/更优雅的方式吗?

java arrays swing jbutton

2
推荐指数
1
解决办法
1087
查看次数

JCheckBoxes数组

我在JFrame中添加了大约10个复选框,这些是添加在for循环中的迭代,代码是这样的

    JFrame f=new JFrame("hello ");
    FlowLayout fl= new FlowLayout();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(300,300);
    f.setVisible(true);
    f.setLayout(fl);

    for (int i=0 ; i<10; i++)
    {

        b[i]=new JCheckBox();
        b[i].setVisible(true);
        b[i].addItemListener(this);
        f.add(b[i]);

    }  /// and so on . 
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我实现ItemListener时,我必须访问每个CheckBox,例如This
if(b [1] .isSelected()),if(b [2] .isSelected())或者还有其他任何技术可以使用一个循环或像这样的东西..在此先感谢

java arrays swing jcheckbox itemlistener

1
推荐指数
1
解决办法
713
查看次数

尝试将ActionListener添加到JButtons

我无法弄清楚如何添加ActionlistenersJButtons,任何帮助将非常感激.

public class Translator extends JPanel implements MouseListener, ActionListener {       

    private JButton french = new JButton();
    private JButton german = new JButton();
    private JButton irish = new JButton();

    public Translator(){
        french = new JButton("French");
        german = new JButton("German");
        irish = new JButton("Irish");           
        setLayout(new GridLayout(2,1));         
        buttonPanel.setLayout(new GridLayout(1,3));
        buttonPanel.add(french);
        buttonPanel.add(german);
        buttonPanel.add(irish);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton actionlistener

1
推荐指数
1
解决办法
1308
查看次数