http://weblogs.java.net/blog/aim/archive/2007/07/embedding_swing.html
http://docs.oracle.com/javase/1.5.0/docs/api/index.html?javax/swing /text/html/ObjectView.html
我将 html 代码添加到 JEditorPane:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<table width="90%" height="90%" align="center">
<tr align="center">
<td align="center">
<object classid="javax.swing.JButton" label="just do it">
</object>
</td>
</tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我怎样才能控制这个按钮呢?(更改大小、颜色、添加监听器等)
我解决了这个问题,一个工作示例:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.ViewFactory;
import javax.swing.text.AttributeSet;
import javax.swing.text.Element;
import javax.swing.text.html.ObjectView;
import javax.swing.text.AbstractDocument;
import javax.swing.text.View;
import javax.swing.text.StyleConstants;
import javax.swing.text.*;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
import java.net.URL;
public class EditorPaneTest extends JFrame
{
public EditorPaneTest()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationByPlatform(true);
JEditorPane editPane = new …Run Code Online (Sandbox Code Playgroud) 我正在做这样的事情:
JFrame frame = new JFrame();
frame.setSize(216, 272);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp = new JPanel();
GridLayout gl = new GridLayout(10, 2);
jp.setLayout(gl);
//this an an 18x18 png
Image img = ImageIO.read(new File("C:\\Users\\Josh\\workspace\\src\\red.png"));
for(int ii=0; ii < 20; ii++)
{
JPanel buttonPanel = new JPanel();
JButton jb1 = new JButton(new ImageIcon(img));
jb1.setBorder(BorderFactory.createEmptyBorder());
buttonPanel.add(jb1);
jp.add(buttonPanel);
}
frame.add(jp);
Run Code Online (Sandbox Code Playgroud)
其产生:

无论我如何调整图像大小或使用frame.size(),我都无法消除垂直间隙。一个块的顶部和另一个块的底部之间始终存在空间。

有谁知道如何删除一个按钮底部和下一个按钮顶部之间的空格?
我正在寻找 的替代品.setEnabled(false),以便该按钮不可点击。
我读过,我可以从按钮中删除 ActionListener,但我只是希望特定按钮不可单击,而且不知道该怎么做。
或者如何摆脱单击按钮后的“选定”效果?
我遇到了问题,我无法单击按钮。它们的行为就像只是带有按钮设计的文本字段。
\n\n我的Main:
tableModStudents = (DefaultTableModel) studentsTable.getModel();\n studentsTable.getColumn(studentsTable.getColumnName(8))\n .setCellRenderer(new JButtonRenderer());\n studentsTable.getColumn(studentsTable.getColumnName(8))\n .setCellEditor(new JButtonEditor());\nRun Code Online (Sandbox Code Playgroud)\n\n我的CellRenderer:
public class JButtonRenderer implements TableCellRenderer { \n private JButton button = new JButton();\n\n public Component getTableCellRendererComponent(JTable table,\n Object buttonText, boolean isSelected, boolean hasFocus, \n int row, int column) {\n table.setShowGrid(true);\n button.setText("Details");\n button.setToolTipText(buttonText.toString());\n return button;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我的CellEditor:
public class JButtonEditor extends AbstractCellEditor implements TableCellEditor {\n\n private JButton button;\n private String txt;\n\n public JButtonEditor() {\n super();\n button …Run Code Online (Sandbox Code Playgroud) 我希望说GUI中的组件就像JButton,JPanel,JTextField这样的好东西是正确的术语.
我想创建一个带整数的文本字段.然后可以按下提交按钮,并根据输入的整数,在弹出窗口或其他任何内容中创建许多文本字段.
我不知道,有人能让我开始朝着正确的方向前进吗?
我遇到的麻烦是我不知道如何创建一个for循环来创建GUI组件.我的意思是如果我有一个for循环并执行类似的操作:
print("JTextField num1 = new JTextField()");
Run Code Online (Sandbox Code Playgroud)
然后在for循环中,当我想要很多时,它只会创建1个文本字段.我如何泛化创建JTextFields的变量?
谢谢你的帮助...
我有一个新的派生类,JButton它给了我一个Enter-Button的形状.
现在我想让它填充与默认相同的渐变JButton.但是我不知道.我怎么能这样做?
此刻它充满了纯黑色.
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class EnterButton extends JButton {
private Polygon shape;
public EnterButton() {
this.shape = new Polygon();
// initialisiere Form
this.initialize();
}
protected void initialize() {
Point p1, p2, p3, p4, p5, p6;
this.setSize(90, 120);
p1 = new Point(0, 0);
p2 = new Point(0, 60);
p3 = new Point(30, 60);
p4 = new Point(30, 120);
p5 = new Point(90, 120); …Run Code Online (Sandbox Code Playgroud) 是否有任何方法可以使JButton看起来没有输入焦点?
我正在创建一个搜索窗口,其中包含输入的文本区域和"查找下一个"按钮以开始搜索.即使键盘输入到文本区域,我也希望"查找下一个"按钮看起来具有焦点.这个想法是通知用户按下<Enter>将开始搜索,类似于Microsoft Word等应用程序.
我知道我可以自己画按钮,但我正在寻找一种更简单的方法.
阅读完所有Dialog教程一段时间后,似乎没有明显的方法可以做到这一点.最接近的似乎是JOptionPane.showOptionDialog,但我受限于optionType这里的参数.
编辑:我想出了问题,但有一个新问题.似乎options指定的参数showOptionDialog需要是相当简单的对象(字符串或只是'对象',而不是JButton等等).我试图在这里放置一系列自定义工厂创建的JButton,因为它们有一个我想要使用的特殊翻转图标.但是,如果点击任何这些按钮不会导致对话框关闭(因此,对话框上的执行继续阻塞)会发生什么.所以我在标题中更新了我的问题.
更简洁地说 - 问题是,我如何覆盖JOptionPane.showOptionDialog(args)以获得我正在寻找的按钮定制?或者我甚至需要这样做?
拜托,谢谢!-B.
朋友们,我尝试使用seticon方法将图像添加到我的Jbutton,但它隐藏了按钮上的文本标签.这是代码:
try {
Image img = ImageIO.read(getClass().getResource("image.jpg"));
studentsButton.setIcon(new ImageIcon(img));
} catch (IOException ex) {
}
Run Code Online (Sandbox Code Playgroud)
我在没有init()/ paint()/ graphics的eclipse中使用swing,它在main方法中的简单框架.
在编写我的Swing应用程序时,我总是遇到麻烦,我想我终于得到了一个明确的答案而不是玩它直到我开始工作......
我有一个JFrame.在这个JFrame里面是一个JButton.在ActionListener中,我想几乎清空JFrame,留下一个或两个组件(包括删除JButton).然后应用程序冻结,因为在ActionListener完成之前,您无法删除该组件.我该如何解决这个问题?
java ×10
jbutton ×10
swing ×8
background ×1
image ×1
jdialog ×1
jeditorpane ×1
jframe ×1
joptionpane ×1
jpanel ×1
jtable ×1
jtextfield ×1
object ×1