我正在尝试使用自定义列标题创建一个表.我希望列标题包含一个用户可以单击的按钮.按钮的功能是从表中删除列.从本质上讲,我试图建立类似这样.
这是我的代码:
public class CustomColumnHeadersTable {
private static String[] columnNames = {
"Column 1", "Column 2", "Column 3"
};
private static String[][] data = {
{"A", "B", "C"},
{"D", "E", "F"},
{"G", "H", "I"}
};
public CustomColumnHeadersTable() {
DefaultTableModel model = new DefaultTableModel((Object[][]) data, columnNames);
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
//set Header Renderer of each column to use the Custom renderer
Enumeration enumeration = table.getColumnModel().getColumns();
while (enumeration.hasMoreElements()) {
TableColumn aColumn = (TableColumn) enumeration.nextElement(); …Run Code Online (Sandbox Code Playgroud) 所以我有这个JButtons我添加了图标.最初的图标太大,所以我事先调整它们的大小,它工作正常.除了当我调整窗口大小时,JButton会改变大小,但不会改变图标,这是有问题的.
有没有办法让Icon只填充它附加的JButton?使代码更清晰的代码:
public JewelClass(){
setBackground (new Color (30,30,30));
addActionListener(this);
setLayout(new GridLayout());
ImageIcon icon = new ImageIcon(src/carre.jpg);
setIcon (resizeIcon(icon,60,60));
}
Run Code Online (Sandbox Code Playgroud)
resizeIcon是一个个人函数,它接受一个Icon,一个width参数和一个height参数,并返回一个调整大小的Icon(显然).我尝试更改布局,但它没有改变任何东西.我尝试获取JButton的宽度/高度,但是因为它们在添加Icon时尚不存在,所以它不起作用.
你们有没有想过如何解决这个问题?它不一定是一个图标,只要我的JButton充满我给它的图像,它真棒:)
谢谢!
任何人都知道或了解为什么我的按钮在我调整applet大小后消失了?
这是我的代码:
import java.awt.event.*;
import javax.swing.*;
import acm.program.*;
public class button extends ConsoleProgram {
public void init(){
hiButton = new JButton("hi");
add(hiButton, SOUTH);
addActionListeners();
}
public void actionPerformed(ActionEvent e){
if(hiButton == e.getSource()){
println("hello") ;
}
}
private JButton hiButton;
}
使用NetBeans将ImageIcon添加到按钮属性.
print.setFont(new java.awt.Font("Serif", 0, 14));
print.setIcon(new javax.swing.ImageIcon(getClass().getResource("/project/print.gif")));
print.setMnemonic('P');
print.setText("Print");
print.setToolTipText("Print");
Run Code Online (Sandbox Code Playgroud)
编译时显示
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at project.Editor.initComponents(Editor.java:296)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在JButton上,我想列出多行的信息.我试过\n作为一个新的线字符但它没有用.以下代码:
JButton.setText("fnord\nfoo") ;
Run Code Online (Sandbox Code Playgroud)
将显示为:
fnordfoo
Run Code Online (Sandbox Code Playgroud)
如何强制换行?

我对java swing很新,不熟悉paint().我想在java swing中创建一个带有上面的按钮.任何人都可以帮我这样做.任何指导都将不胜感激.提前致谢
我JPanel装了一个JFrame.JPanel包含4个JButtons.我想要做的是自动将焦点放在第一个jbutton上,这样我就可以在JButtons和键盘之间进行遍历.
我jButton1.requestFocusInWindow();在jpanel的构造函数中尝试了代码,但它仍然没有用.有什么东西我不见了吗?我还能做什么?
编辑:项目包含3个java文件,其代码如下:
NewJFrame.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sampleui;
import java.awt.Container;
import java.awt.Toolkit;
import javax.swing.JRootPane;
import javax.swing.UIManager;
/**
*
* @author Administrator
*/
public class NewJFrame extends javax.swing.JFrame {
static Container container;
/**
* Creates new form NewJFrame
*/
public NewJFrame() {
initComponents();
rootPane= getRootPane();
container=getContentPane();
setSize(Toolkit.getDefaultToolkit().getScreenSize());
setVisible(true);
}
/**
* This method is called from within the …Run Code Online (Sandbox Code Playgroud) 作为我程序的一部分,我需要一个按钮,当用户点击它时,它会打开一个新窗口.
好吧,我想我应该有一个类来制作框架并通过按钮调用它.但我没有任何想法开始.我只是在程序中得到了我的按钮,但它不起作用.有人能告诉我怎么做吗?或编码.
我想将YES和NO改为同意/不同意.我该怎么办?
int reply = JOptionPane.showConfirmDialog(null,
"Are you want to continue the process?",
"YES?",
JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud) 我有自己的Dialog弹出两个文本字段,两个JLabel和一个"ok"JButton.弹出窗口是一个登录窗口.窗口工作完美我只是想知道我如何能够添加"取消"JButton,因此用户可以取消登录.
这是我的窗口代码:
public Hashtable<String, String> login(JFrame frame) {
Hashtable<String, String> logininformation = new Hashtable<String, String>();
JPanel panel = new JPanel(new BorderLayout(5, 5));
JPanel label = new JPanel(new GridLayout(0, 1, 2, 2));
label.add(new JLabel("E-Mail", SwingConstants.RIGHT));
label.add(new JLabel("Password", SwingConstants.RIGHT));
panel.add(label, BorderLayout.WEST);
JPanel controls = new JPanel(new GridLayout(0, 1, 2, 2));
JTextField username = new JTextField();
controls.add(username);
JPasswordField password = new JPasswordField();
controls.add(password);
panel.add(controls, BorderLayout.CENTER);
JOptionPane.showMessageDialog(frame, panel, "login", JOptionPane.QUESTION_MESSAGE);
logininformation.put("user", username.getText());
logininformation.put("pass", new String(password.getPassword()));
return logininformation;
}
Run Code Online (Sandbox Code Playgroud)
如果需要,请点击登录窗口的屏幕截图:

如果你点击右下角的"x",它也会关闭.但我想要取消JButton,如果它很容易.
java ×10
jbutton ×10
swing ×9
imageicon ×2
joptionpane ×2
awt ×1
focus ×1
jframe ×1
jpanel ×1
jtable ×1
jtextfield ×1
multiline ×1
netbeans-7 ×1
resize ×1