我有一个JButton,出于各种原因我想表现得像一个按钮,但看起来像一个JLabel.它实际上并不一定是引擎盖下的JLabel,我只是不希望凸起的按钮边缘显示出来.
是否有一种简单的方法可以关闭JButton的"按钮外观",但保留所有按钮功能?
我可以构建一些组合的子类超级按钮,它被委托给jlabel用于显示目的,但我真的希望有类似的东西button.lookLikeAButton(false).
我之前有一个JLabel,我想点击它.我发现这样做最简单的方法是使它成为JButton并使用以下代码.它现在看起来像一个JLabel
button.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setFocusPainted(false);
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,除了文本现在在中间对齐.现在从我能够阅读其他问题和搜索.这应该工作
button.setHorizontalTextPosition( SwingConstants.LEFT );
Run Code Online (Sandbox Code Playgroud)
然而,文本仍然在按钮中间对齐.我有什么想法可以改变这个?
我想为我的挥杆应用做出光滑的圆角,但我无法得到我想要的结果......
这是截图:
1. setShape()对于JFrame:

2. paintComponent()JPanel的覆盖方法,而不是使用setShape():

3. setBackground(new Color(0, 0, 0, 0))对于JFrame:

好吧,但文字质量有问题:
在第3步之前:

在第3步之后:

伙计们我很困惑,我已多次搜索,但没有任何帮助我...我该怎么办?请帮我
这是完整的代码:
public class WelcomePage extends JFrame {
private Point initialClick;
private boolean end = false;
private JLabel jLabelAppTitle;
private JPanel jPanelExit;
private JLabel jLabelHint;
private int r = 220, g = 0, b = 0;
private int r2 = 10, g2 = 10, b2 = 10;
private boolean flag = false;
public WelcomePage() {
initComponents();
// setShape(new RoundRectangle2D.Double(0, 0, …Run Code Online (Sandbox Code Playgroud) 下面是在特定pannel3上以gridlayout形式创建9个按钮的代码.我想要的是使每个按钮的背景为黑色,上面有灰色文字.有人可以帮忙吗?
for(int i=1;i<=9;i++)
{
p3.add(new JButton(""+i));
}
Run Code Online (Sandbox Code Playgroud) 我怎样才能将这样的图像放到slavePanelJPanel的顶部和顶部,调整JButtons看起来像图像但是按钮正确缠绕?(现在它们形成一排,四列)

//
// Shot Gun mover up/down/left/right, middle on is for zoom
//
public void GunMover(JPanel configPanel) throws IOException {
// Master Panel - holds everything
JPanel masterPanel = new Panel();
masterPanel.setLayout(new SpringLayout());
// Slave Panel - with image background
JPanel slavePanel = new Panel();
slavePanel.setLayout(new SpringLayout());
// Row 1
final JButton ptzLeft = new JButton("<");
masterPanel.add(ptzLeft, BorderLayout.WEST);
// Row 2
final JButton ptzRight = new JButton(">");
masterPanel.add(ptzRight, BorderLayout.CENTER);
// Row 3
final JButton ptzUp = …Run Code Online (Sandbox Code Playgroud) 好吧,我有一个图像,我想把它作为一个按钮的背景(或一些可引用的东西).问题是这个图像是圆的,所以我需要显示这个图像,没有任何边框等.
保存此按钮的JComponent具有自定义背景,因此按钮确实只需显示图像.
搜索谷歌后,我无法做到这一点.我已经尝试了以下所有,但没有运气:
button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setOpaque(true);
Run Code Online (Sandbox Code Playgroud)
在我在背景上绘制图标后,按钮会绘制它,但是会保留带边框的丑陋灰色背景等.我还尝试使用JLabel和JButton.并在其上绘制ImageIcon,但如果用户调整窗口大小或最小化窗口,图标就会消失!
我怎样才能解决这个问题?
我只需要将图像绘制并舍入到JComponent并听取它的点击次数......
我有一个带有自定义单元格渲染器的JTable.该单元格是一个包含JTextField和JButton的JPanel.JTextField包含一个整数,当用户单击JButton时,应该增加整数.
问题是当我在JTable单元格中使用它时,无法单击JButton.如何使其可点击?

这是我的测试代码:
public class ActiveTable extends JFrame {
public ActiveTable() {
RecordModel model = new RecordModel();
model.addRecord(new Record());
JTable table = new JTable(model);
EditorAndRenderer editorAndRenderer = new EditorAndRenderer();
table.setDefaultRenderer(Object.class, editorAndRenderer);
table.setDefaultEditor(Object.class, editorAndRenderer);
table.setRowHeight(38);
add(new JScrollPane(table));
setPreferredSize(new Dimension(600, 400));
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Active Table");
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ActiveTable();
}
});
}
class RecordModel extends AbstractTableModel {
private final List<Record> records = new ArrayList<Record>();
@Override
public int getColumnCount() …Run Code Online (Sandbox Code Playgroud) 我正在尝试用Java编写Minesweeper克隆以获得乐趣.我有一个JButtons网格,我将更改其标签以表示危险计数,标志等.
我的问题是,我不知道如何右键单击JButton来按下按钮.我做了以下事情:
button.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
boolean mine = field.isMine(x, y);
if (e.isPopupTrigger()) {
button.setText("F");
}
else {
if (mine) {
button.setText("X");
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这似乎根本不起作用; "F"从未显示,只有"X"部分.但更重要的是,这对于按下按钮没有任何作用.
编辑:Macs有弹出触发器发生在mousePress上,而不是mouseClick.
编辑:这是我根据接受的答案制定的解决方案:
button.addMouseListener(new MouseAdapter(){
boolean pressed;
@Override
public void mousePressed(MouseEvent e) {
button.getModel().setArmed(true);
button.getModel().setPressed(true);
pressed = true;
}
@Override
public void mouseReleased(MouseEvent e) {
//if(isRightButtonPressed) {underlyingButton.getModel().setPressed(true));
button.getModel().setArmed(false);
button.getModel().setPressed(false);
if (pressed) {
if (SwingUtilities.isRightMouseButton(e)) {
button.setText("F");
}
else {
button.setText("X");
}
}
pressed = false;
}
@Override
public void mouseExited(MouseEvent e) …Run Code Online (Sandbox Code Playgroud) 有谁知道如何使jbutton关闭gui?我认为这样System.CLOSE(0);但是没有用.它也可能exitActionPerformed(evt);,但这也不起作用.只需要代码行就可以了.
编辑:别介意的人.答案是System.exit(0);.谢谢你的帮助!
如何以编程方式发送ActionEvent(例如按下按钮/ ACTION_PERFORMED)到JButton?
我知道:
button.doClick(0);
Run Code Online (Sandbox Code Playgroud)
和
button.getModel().setArmed(true);
button.getModel().setPressed(true);
button.getModel().setPressed(false);
button.getModel().setArmed(false);
Run Code Online (Sandbox Code Playgroud)
但是不是可以直接发送它ActionEvent吗?
编辑:这不是生产代码,它只是一个小小的个人实验.