我在Java中遇到了JButton的问题.基本上,我想禁用按钮的边框(该按钮被添加到JDesktopPane).
这是我的代码:
JButton j = new JButton("BUTTON");
j.setIcon(icon1); //icon1 : icon//
j.setFocusable(true);
j.setContentAreaFilled(false);
j.setBounds(90, 20, 130, 30);
dtp.add(j); //dtp : JDesktopPane//
Run Code Online (Sandbox Code Playgroud)
它可以让边框像这张图片一样消失:

但是当我的鼠标被点击(没有移动)到按钮时,按钮周围有一个"点"边框,如下所示:

所以,我怎么能设置按钮,这样当我不在按钮区域移动鼠标时,它仍然像第一张图像一样设置,但是当我移动鼠标时,按钮周围有一个方形(带有一个灯 - 蓝色背景)?
我试图弄清楚我对动作听众做错了什么.我正在关注多个教程,但是当我尝试使用动作监听器时,netbeans和eclipse会给我错误.
下面是一个简单的程序,我试图让按钮工作.
我究竟做错了什么?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class calc extends JFrame implements ActionListener {
public static void main(String[] args) {
JFrame calcFrame = new JFrame();
calcFrame.setSize(100, 100);
calcFrame.setVisible(true);
JButton button1 = new JButton("1");
button1.addActionListener(this);
calcFrame.add(button1);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button1)
}
}
Run Code Online (Sandbox Code Playgroud)
动作监听器永远不会注册,因为if(e.getSource() == button1)它无法看到button1,错误说无法找到符号.
private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");
Run Code Online (Sandbox Code Playgroud)
如何将动作侦听器添加到这些按钮,以便从我可以调用actionperformed它们的主方法,所以当它们被单击时,我可以在我的程序中调用它们?
我正在尝试(测试其他东西)将一个JButton引用添加到两个中JPanels进行测试,它会从添加到的第一个面板中消失!
那么,不能将Swing组件添加到多个容器中吗?
先感谢您.
我创建了一个swings应用程序,GUI上有一个"开始"按钮.我希望每当我点击"开始"按钮时,应禁用启动按钮并启用"停止"按钮.
为此,我在"开始"按钮的"ActionPeformed(...)"方法中编写了以下代码
startButton.setEnabled(false);
stopButton.setEnabled(true);
Run Code Online (Sandbox Code Playgroud)
但是上面的代码并没有在GUI上创建所需的效果.
以上代码是否符合我的要求?
它也没有使用"repaint()".
编辑:
代码很长,所以我无法粘贴所有代码.但是,我可以告诉我更多关于代码的信息.
在"开始"按钮的"ActionPeformed"方法中,在调用上述两个语句之后,我正在执行"SwingWorker"线程.
这个线程是否会产生任何问题?
这是我想要做的截图:

发生了什么事情,JButton显示正确,但点击它没有任何反应.经过一番搜索,我发现Object返回的table.getValueAt()是一个String而不是一个JButton ...
这是代码:
tblResult = new JTable(data,cols) {
public TableCellRenderer getCellRenderer( int row, int column ) {
return new ClientsTableRenderer();
}
};
Run Code Online (Sandbox Code Playgroud)
我使用它在运行时填充JTable :( tblResult现在Clients.rblResult)
SwingUtilities.invokeLater( new Runnable() {
public void run() {
DefaultTableModel aModel = new DefaultTableModel() {
//setting the jtable read only
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
String[] cols = {"N°","Société", "TVA", "CP", "Ville", ""};
aModel.setColumnIdentifiers(cols);
Object[] temp = new Object[6];
for(int i=0;i<result.length;i++) …Run Code Online (Sandbox Code Playgroud) 所以我知道这是一个很受欢迎的问题,已经找到了解决方案.但是,当我尝试这个时,它无法正常工作.
我的JTextField为空,并且未启用该按钮.当我在文本字段中写东西时,按钮不会启用.
所以我的程序应该每秒检查一次该字段是否为空.只要有人在文本字段中写入内容,就应该启用该按钮.^^
loginbt = new JButton("Login");
loginbt.addActionListener(new loginHandler());
add(loginbt);
if(name.getText().equals("")) {
loginbt.setEnabled(false);
}else {
loginbt.setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud) 我更喜欢边距最小的按钮,与文本标题一样宽.有没有办法在Swing中的JButton中实现这一点?
我现在在实践中看到的是,即使我尝试使用setMaximumSize()和类似的东西,它最终也会吃掉文本标题,将其剪切到右边.但它并没有降低利润率.
我想在JFrame中的特定坐标上放置一个Jbutton .我为JPanel(我放在JFrame上)设置了setBounds,并为JButton设置了setBounds.但是,它们似乎没有按预期运行.
我的输出:
替代文字http://i49.tinypic.com/2d8kuah.jpg
这是我的代码:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Control extends JFrame {
// JPanel
JPanel pnlButton = new JPanel();
// Buttons
JButton btnAddFlight = new JButton("Add Flight");
public Control() {
// FlightInfo setbounds
btnAddFlight.setBounds(60, 400, 220, 30);
// JPanel bounds
pnlButton.setBounds(800, 800, 200, 100);
// Adding to JFrame
pnlButton.add(btnAddFlight);
add(pnlButton);
// JFrame properties
setSize(400, 400);
setBackground(Color.BLACK);
setTitle("Air Traffic Control");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Control(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的一个布局JDialog以适应我正在移植到Java的程序的特定外观,我之前使用过几个LayoutManagers并取得了巨大的成功但由于某种原因我似乎无法得到这个工作在一起.我的目标是让内部的右侧(东侧)JDialog按照自上而下的顺序包含"查找下一个"和"取消"按钮,然后在下面的任何额外空间中,以便两个按钮始终位于顶部JDialog,出于某种原因BoxLayout不断忽视任何改变的尝试(这是我失去的地方)的宽度JButton.代码如下.
JButton findNext = new JButton("Find Next");
JButton cancel = new JButton("Cancel");
cancel.setPreferredSize(new Dimension((int)findNext.getPreferredSize().getWidth(),
(int)cancel.getPreferredSize().getHeight()));
JPanel example = new JPanel();
example.setLayout(new BoxLayout(example, BoxLayout.Y_AXIS));
example.add(findNext);
example.add(cancel);
example.add(Box.createGlue());
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,cancel始终保持它的正常尺寸.我已经尝试setMinimumSize()并setMaximumSize()使用相同的参数setPreferredSize,没有运气.我甚至尝试cancel.setPreferredSize(new Dimension(500, 500));了按钮高度是唯一调整的东西,它仍然保留了它给出的默认宽度.
要清除任何问题,这就是它的样子(现在我已经完成了),你会看到"查找下一个"和"取消"按钮的大小不同.

java ×10
jbutton ×10
swing ×9
jpanel ×2
jcomponent ×1
jframe ×1
jtable ×1
jtextfield ×1
margin ×1