我想在我的应用程序中创建一个工具栏.如果单击该工具栏上的按钮,它将弹出一个菜单,就像在Eclipse的工具栏中一样.我不知道如何在Swing中这样做.有谁可以帮助我吗?我试过谷歌,但一无所获.
基本上,我有一个JTable包含具有右对齐单元格但左对齐标题的列,这看起来非常糟糕.我想右对齐这些列的标题而不改变标题的"外观和感觉".
谢谢
甚至我也阅读并测试了@kleopatra的答案
关于super.getTableCellRendererComponent(...)必须在返回之前的最后一行代码行,我无法通过这些建议编写正确的渲染器,因为我只能这样工作
JLabel是为Borders,HorizontalAlignment和Foreground添加的,特别是Background通过使用Component而不是JLabel(在这里不太重要)引起了一些非句子



来自SSCCE
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class SelectedTableHeader {
private JFrame frame = new JFrame("Table Demo");
private JTableHeader header;
private Object selectedColumn = null;
private String[] columnNames = {"String", "Integer", "Float", "Double", "Locale & Double", "Boolean"};
private Object[][] data = {
{"aaa", new Integer(12), new Float(12.15), new Double(100.05), new Double(12.05), true},
{"bbb", new Integer(5), new Float(7.154), new Double(6.1555), new Double(417.55), false},
{"CCC", new Integer(92), …Run Code Online (Sandbox Code Playgroud) 我试过了:
table.getTableHeader().setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
不行.
编辑:此代码仅在我的项目中不起作用.适用于其他项目.我可能已经更改了一个可以阻止颜色变化的属性.或者NetBeans有一些保留默认颜色的属性.我注意到了别的什么.我项目中标题的颜色以不同的方式闪耀.在颜色变化有效的示例中,我看到了不同的图形.
编辑2:别的.我注意到按钮也不会改变颜色.必须是通用的东西.希望这可以帮助.不幸的是,SSCCE在这种情况下无法工作,因为我无法重现问题.我肯定使用正确的组件名称.
是否可以添加ActionListener到列标题JTable.
这是我的桌子
现在,我想的添加ActionListener到列标题(例如WQE,SDM)我想是能够显示在另一个窗口中列描述.
我有一个带复选框的JTable作为列之一.我还在标题中有一个复选框来检查/取消选中所有.AFAIK JTable的默认行为是,如果选择新行,它将取消选择之前选择的所有行.但是我们可以通过复选框实现CTRL点击行为.保留以前选定的行.我面临的主要问题是使用复选框启用多个JTable行选择.
检查第一行然后选择第一行,如果选中第三行,则选择第三行以及第一行(已经选中并选中)
检查并选择第一行时,如果选择第三行,则取消选择先前选择的所有行,仅选择第三行.
我有一个示例代码,它模拟我希望实现与Add Another One按钮相同的方案,但有复选框选择.
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.table.AbstractTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
import javax.swing.event.CellEditorListener;
public class JTableRowSelectProgramatically extends JPanel {
final JTable table = new JTable(new MyTableModel());
public JTableRowSelectProgramatically() {
initializePanel();
}
private void initializePanel() {
setLayout(new BorderLayout());
setPreferredSize(new Dimension(475, 150));
table.setFillsViewportHeight(true);
JScrollPane pane = new JScrollPane(table);
JLabel label2 = new JLabel("Row: ");
final JTextField field2 = new JTextField(3);
JButton add = new JButton("Select");
table.setRowSelectionAllowed(true); …Run Code Online (Sandbox Code Playgroud) 如何使JTableHeader可编辑.我将ColumnHeader作为JTextField.我该怎么做才能使JTextField可编辑.看例子:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
public class Test extends JFrame {
String[][] cellValues = { { "v00", "v01", "v02" }, { "v10", "v11", "v12" },
{ "v20", "v21", "v22" }, { "v30", "v31", "v32" },
{ "v40", "v41", "v42" }, { "v50", "v51", "v52" } };
String[] columnNames = { "v00", "v01", "v02" };
javax.swing.JTable jTable1 = new javax.swing.JTable(cellValues, columnNames);
public Test() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
} …Run Code Online (Sandbox Code Playgroud) 我已经阅读了大多数JTable/JComboBox对此类其他问题的回复,但还没有找到解决我问题的方法.
我创建了一个具有JComboBox TableHeader元素的表.没有任何JComboBox元素将打开以显示项目列表.如何获取要显示的各个JComboBox元素的项目列表?
请注意,此问题的一个显着特征是JComboBox位于TableHeader中,未嵌入JTable单元中.
任何帮助表示赞赏.
SSCE
import java.awt.Component;
import java.awt.Dimension;
import java.util.Enumeration;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class ComboHeaderTest extends JScrollPane {
private static final Dimension DEFAULT_SIZE = new Dimension(200, 200);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ComboHeaderTest().initComponents();
}
});
}
private ComboHeaderTest() {
final String[][] data = { {"Header 1", "Header 2", "Header 3"},
{"A", "B", "C"},
{"D", …Run Code Online (Sandbox Code Playgroud) 在我的代码片段中!"checkBoxList"没有文件选择器选择并存储在其中的文件
复选框"tmp"它有文件的复选框!
当我在我的面板中显示文件[checkboxlist]时,它是未经检查的!我有选项后勾选/取消它.
我有以下代码用于选择/取消选择选项
我需要知道何时显示文件!文件应该显示为勾选(勾选)然后我可以修改我可以勾选/取消勾选.
我坚持这个逻辑!
[
编辑:我做了并更新了这部分的答案(见图).
我将select/deselectall添加到面板(框)并且它有效
box.add(chckbxSelectAll);
Run Code Online (Sandbox Code Playgroud)
&&我需要并且好奇知道如何将我的selectall复选框放在我的面板中
]
public void selectAllMethod() {
Iterator<JCheckBox> i = checkBoxList.iterator();
while (i.hasNext()) {
JCheckBox tmp = i.next();
if (chckbxSelectAll.isSelected()) {
tmp.doClick();
} else {
tmp.setSelected(false);
selectedCounter -= 1;
if (selectedCounter < 0) {
selectedCounter = 0;
}
noOfFileTxt.setText(Integer.toString(selectedCounter));
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的按钮选择方法,用于选择文件夹并在带有复选框的面板中显示它
public void chooseDirectoryFrom() {
String tempStr = null;
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
fileChooser = new JFileChooser();
Font font = new Font("Latha", Font.ITALIC, 10);
fileChooser.setFont(new Font("Latha", Font.PLAIN, 13));
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setFont(font); …Run Code Online (Sandbox Code Playgroud) 我的问题是在JTable中删除列标题的边框.
我的类扩展了JTable,因此我设法通过以下方式擦除所有其他边界:
super.setShowHorizontalLines(false);
super.setShowVerticalLines(false);
但这不会删除列标题中的边框.这该怎么做?
java ×10
swing ×10
jtable ×8
jtableheader ×6
arrays ×1
checkbox ×1
jbutton ×1
jcombobox ×1
jfilechooser ×1
jpopupmenu ×1
menu ×1
netbeans ×1