我很好奇如何valueChanged
在JTable
双击行中时调用重写方法.现在,下面的代码片段实现了一个单击操作或事件箭头键,以便在人员列表中导航并进行相应调整JLabel
.我正在尝试做的是类似于我点击一次的类似事情,但这次IF和ONLY如果双击一行dto
就会改变其他事情.我该怎么做呢 :(
class ListDataUI {
public void addListSelectionListener(ListSelectionListener listSelectionListener) {
summaryTable.getSelectionModel().addListSelectionListener(listSelectionListener);
public T getSelectedDTO() {
final int selectedRowIndex = summaryTable.getSelectedRow();
if (selectedRowIndex != -1) {
return data.get(summaryTable.convertRowIndexToModel(selectedRowIndex));
} else {
return null;
}
}
}
}
class MainMenu extends javax.swing.JFrame {
private void initListeners() {
searchTable.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
AcademicDTO dto = (AcademicDTO) searchTable.getSelectedDTO();
acImgLabel.setIcon(new ImageIcon());
label_name.setText(dto.getTitle() + " " + dto.getForename() + " …
Run Code Online (Sandbox Code Playgroud) 例如,执行用于显示各种列的长语句时的问题之一
select g.guestid, g.forename, g.surname, b.bookingid,
b.arrivedate, b.departdate, br.floorno, br.roomno from...
Run Code Online (Sandbox Code Playgroud)
Linux终端上的列大小似乎是一个问题.例如,Forename VarChar(80)列在执行上述语句时占用屏幕的大部分宽度,并且一种方法可以通过以下方式将其删除:
SET COLUMN FORENAME FORMAT A10
Run Code Online (Sandbox Code Playgroud)
例如.但是,许多专栏需要反复进行,这很长.即
SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10
Run Code Online (Sandbox Code Playgroud)
等等...
有没有办法说根据文字宽度调整列宽,以便每个人都很好地适应.而不是这样..
我更喜欢一些不涉及使用FUNCTIONS的解决方案.
public class EventController extends MouseAdapter implements ActionListener {
private EventModel model;
private EventView view;
String tableClick;
Events events;
/** Constructor */
public EventController(EventModel myModel, EventView myView){
model = myModel;
view = myView;
}
public void setUpListeners() {
this.view.addEventButton.addActionListener(this);
this.view.addEventMenuItem.addActionListener(this);
this.view.editEventMenuItem.addActionListener(this);
this.view.tableEvent.addMouseListener(this);
}
@Override
public void actionPerformed(ActionEvent e){
Object button = e.getSource();
if(button==this.view.addEventButton) {
setEventDetails();
}
}
@Override
public void mouseClicked(java.awt.event.MouseEvent event) {
int rowSelected = view.tableEvent.getSelectedRow();
//blahblahblah
view.changeDisplay(events);
}
Run Code Online (Sandbox Code Playgroud)
我如何覆盖keyPressed
KeyListener类的方法,就像我已经完成的那样mouseClicked
,ActionPerformed
我真的不想覆盖keyTyped
它keyReleased
,只是 …
我在main方法中创建了一个logger实例,并将其设置为全局变量.如果我想使用相同的日志文件来记录消息,那么将相同的记录器实例传递给不同的类构造函数是一种好习惯.你怎么能这样做而不是通过.
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
Handler h = new FileHandler("../logs/MyLogFile_"
+ sdf.format(date) + ".log", true);
h.setFormatter(new SingleLineFormatter());
h.setLevel(Level.ALL);
logger.setUseParentHandlers(false);
logger.addHandler(h);
}
public void go(XMLConfig config) throws Exception {
Controller.setGlobalErrorHandler(new ErrorHandler(logger));
}
public class ErrorHandler implements FDSErrorHandler {
private static Logger logger = Logger.getLogger("com.explore.lse");
public ErrorHandler(Logger logger) {
this.logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud) java ×3
swing ×2
double-click ×1
events ×1
jtable ×1
keylistener ×1
logging ×1
oracle ×1
sqlplus ×1