ट्रिगर करने के बाद कर्सर आइकन बदलता नहीं है आकार बदलने योग्य हेडर कॉलम के साथ मेरे एप्लिकेशन में JTable
है। आम तौर पर जब मैं कर्सर को आकार बदलने के लिए टेबल हेडर पर ले जाता हूं, तो कर्सर आइकन < -> जैसे आकार बदलने के लिए बदल जाता है।सेट कर्सर विधि
लेकिन निम्नलिखित परिदृश्य में चीजें अलग-अलग हैं।
उसी Frame
में एक बटन कार्रवाई है, और कार्रवाई के दौरान, मैं कर्सर को व्यस्त आइकन पर सेट कर रहा हूं और Container.setCurosr(Cursor cursor)
विधि का उपयोग कर कार्रवाई पूर्ण होने के बाद इसे डिफ़ॉल्ट कर्सर में बदल सकता हूं।
कभी-कभी अगर मैं कर्सर को आकार बदलने के तालिका शीर्षलेख पर ले जाता हूं, बटन क्रिया के बाद, कर्सर आइकन आकार बदलने के लिए बदलता नहीं है, कर्सर बिल्कुल नहीं बदलता है।
क्या इसे जावा स्विंग में एक बग के रूप में माना जा सकता है या क्या इस समस्या का समाधान है?
अद्यतन: नमूना कोड बटन पर संलग्न
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ColumnResizeIconTest extends JFrame {
JScrollPane scrollPane;
JTable table;
JButton button;
public ColumnResizeIconTest() {
setLayout(new BorderLayout());
addComponents();
setSize(300,300);
}
private void addComponents() {
addButton();
addTable();
}
private void addButton() {
button = new JButton("Click Me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
setWaitCursor();
for(int i=0; i<2000; i++) {
System.out.print(i);
}
setDefaultCursor();
}
});
add(button, BorderLayout.NORTH);
}
private void addTable() {
scrollPane = new JScrollPane(createTable());
add(scrollPane, BorderLayout.CENTER);
}
private JTable createTable() {
Object[][] cellData = { { "1-1", "1-2","1-3" }, { "2-1", "2-2", "2-3" }, { "3-1", "3-2", "3-3" } };
String[] columnNames = { "column1", "column2", "column3" };
table = new JTable(cellData, columnNames);
return table;
}
private void setWaitCursor() {
Container container = getContentPane();
setWaitCursor(container);
}
private void setWaitCursor(Container container) {
for(int iCount = 0; iCount < container.getComponentCount(); iCount++) {
Component child = (Component) container.getComponent(iCount);
if(child instanceof Container) {
setWaitCursor((Container) child);
} else {
child.setCursor(new Cursor(Cursor.WAIT_CURSOR));
}
}
container.setCursor(new Cursor(Cursor.WAIT_CURSOR));
}
private void setDefaultCursor() {
Container container = getContentPane();
setDefaultCursor(container);
}
private void setDefaultCursor(Container container) {
for(int iCount = 0; iCount < container.getComponentCount(); iCount++) {
Component child = (Component) container.getComponent(iCount);
if(child instanceof Container) {
setDefaultCursor((Container) child);
} else {
child.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
container.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public static void main(String[] argv) throws Exception {
ColumnResizeIconTest test = new ColumnResizeIconTest();
test.setVisible(true);
}
}
क्लिक करें कई बार और तालिका स्तंभ का आकार बदलने की कोशिश करो। कर्सर डिफ़ॉल्ट कर्सर के साथ फंस गया है।
जावा किस संस्करण में जावा का संस्करण है? –
1) जल्द से जल्द बेहतर सहायता के लिए, एक [एसएससीसीई] (http://sscce.org/) पोस्ट करें। 2) * "इसे एक बग के रूप में माना जा सकता है .." * शायद। * ".. जावा स्विंग में .." * शायद नहीं। * ".. या इस मुद्दे के लिए कोई समाधान है?" * अपना कोड ठीक करें (शायद)। –
@ एंड्रयू थॉम्पसन आज के लिए शायद कितना संभव है, 4 से शायद 4 से सहमत हो गए हैं। – mKorbel